Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的TCP客户端-服务器连接有什么问题?_Java - Fatal编程技术网

Java 我的TCP客户端-服务器连接有什么问题?

Java 我的TCP客户端-服务器连接有什么问题?,java,Java,我正在创建一个TCP客户机-服务器连接,其中客户机向服务器发送两个数字,服务器返回它们的总和。我的TCPServer.java类似乎有问题。它一直返回“socketclosed”,而不返回任何金额。在多次测试之后,程序在我分割字符串的地方停止(要添加的两个数字用逗号分隔) 出了什么问题?这与我关闭缓冲区的位置有关吗 public class TCP_ServerThread extends Thread{ Socket connectionSocket2; public TCP_Ser

我正在创建一个TCP客户机-服务器连接,其中客户机向服务器发送两个数字,服务器返回它们的总和。我的TCPServer.java类似乎有问题。它一直返回“socketclosed”,而不返回任何金额。在多次测试之后,程序在我分割字符串的地方停止(要添加的两个数字用逗号分隔)

出了什么问题?这与我关闭缓冲区的位置有关吗

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");
}

“套接字关闭”表示您关闭了套接字,然后继续使用它

关闭套接字的输入或输出流也会关闭套接字