Java 我的TCP客户端-服务器连接有什么问题?
我正在创建一个TCP客户机-服务器连接,其中客户机向服务器发送两个数字,服务器返回它们的总和。我的TCPServer.java类似乎有问题。它一直返回“socketclosed”,而不返回任何金额。在多次测试之后,程序在我分割字符串的地方停止(要添加的两个数字用逗号分隔) 出了什么问题?这与我关闭缓冲区的位置有关吗Java 我的TCP客户端-服务器连接有什么问题?,java,Java,我正在创建一个TCP客户机-服务器连接,其中客户机向服务器发送两个数字,服务器返回它们的总和。我的TCPServer.java类似乎有问题。它一直返回“socketclosed”,而不返回任何金额。在多次测试之后,程序在我分割字符串的地方停止(要添加的两个数字用逗号分隔) 出了什么问题?这与我关闭缓冲区的位置有关吗 public class TCP_ServerThread extends Thread{ Socket connectionSocket2; public TCP_Ser
public class TCP_ServerThread extends Thread{
Socket connectionSocket2;
public TCP_ServerThread(Socket connectionSocket)
{
this.connectionSocket2=connectionSocket;
}
public void run(){
try{
Socket connectionSocket=this. connectionSocket2;
BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
String clientsentence = inFromClient.readLine();
String[]arr=clientsentence.split(",");
System.out.println(arr[0]);
System.out.println(arr[1]);
int sum=Integer.parseInt(arr[0])+Integer.parseInt(arr[1]);
outToClient.writeBytes(Integer.toString(sum));
outToClient.close();
}
catch(Exception n)
{
System.out.println("cannot connect");
}
}
下面是TCPClient.java类
public class TCP_ClientThread extends Thread {
public static int summ=0,portNum;
public static String ip;
public TCP_ClientThread(String ip,int port)
{
this.ip=ip;
this.portNum=port;
}
@Override
public void run() {
try{
TCPClient.gate.await();
int clientNum=summ++;
int firstNumber,secondNumber;
try{
//
Random num=new Random();
firstNumber=num.nextInt();
System.err.println("first no of client "+clientNum+"is"+firstNumber);
secondNumber=num.nextInt();
System.err.println("second no of client "+clientNum+"is"+secondNumber);
//---------------*open socket-----------------------------------
String ipp=this.ip;
int portt=this.portNum;
Socket ClientSocket = new Socket (ipp,portt);
//------------* input and output buffer---------------------------------------
DataOutputStream OutToServer = new DataOutputStream (ClientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader (new InputStreamReader(ClientSocket.getInputStream()));
System.out.println("connected");
//------------------* data inside buffer-----------------------------------
String data1=Integer.toString(firstNumber);
String data2=Integer.toString(secondNumber);
String data=(data1.concat(",")).concat(data2);
//-----------------------*Send to server-------------------------------
OutToServer.writeBytes(data);
OutToServer.close();
System.err.println("send packet of "+clientNum);
//---------------------------------------------------------------------------------
//-----------------------**Receive--------------------------------------
String sum = inFromServer.readLine();
// inFromServer.close();
System.out.println("sum of "+clientNum+"= "+sum);
ClientSocket.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
catch(Exception b)
{
System.out.println("gate");
}
“套接字关闭”表示您关闭了套接字,然后继续使用它 关闭套接字的输入或输出流也会关闭套接字