从java服务器套接字接收C#客户端套接字中的数据时出错

本文关键字:套接字 数据 客户端 出错 java 服务器 | 更新日期: 2023-09-27 18:19:56

我正在创建一个带有C#客户端套接字和Java服务器套接字的套接字连接。当我从客户端套接字发送数据时,服务器套接字正在正确地接收该数据。但是,当我试图将数据从服务器套接字发送回客户端套接字时,它在客户端接收数据时被挂起了。

客户端代码(在C#.net中)

           clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            string hostName = System.Net.Dns.GetHostName();
            System.Net.IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(hostName);
            System.Net.IPAddress[] ipAddresses = hostEntry.AddressList;
            System.Net.IPEndPoint remoteEP =
                new System.Net.IPEndPoint(ipAddresses[ipAddresses.Length - 1], port);
            clientSocket.Connect(remoteEP);
             string sendData = inputFilePath;
                    byte[] byteDataSend = System.Text.Encoding.ASCII.GetBytes(sendData);
                    clientSocket.Send(byteDataSend);
                    int receivedBufferSize = clientSocket.ReceiveBufferSize;
                    byte[] recivedData = new Byte[receivedBufferSize];
                    int receivedDataLength = clientSocket.Receive(recivedData);
                    string stringData = Encoding.ASCII.GetString(recivedData, 0, receivedDataLength);
                    textFilePath = stringData;
                    Console.Write(stringData);
                    clientSocket.Close();

服务器套接字代码(Java)

           Socket connection = server.accept();
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
            fileName = in.readLine();
            convertedFile =runConverter.convertDocumet(fileName);
            byte[] sendingData = convertedFile.getBytes("US-ASCII");
            DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
            dos.write(sendingData, 0, sendingData.length);

告诉我问题出在哪里??请帮忙。。。

从java服务器套接字接收C#客户端套接字中的数据时出错

这种c#代码的常见问题是同步接收
我总是建议进行异步读取,就像这个答案一样。

我不确定这是你的问题的根源,但如果你通过一点日志记录来实现异步接收,那么很有可能会解决你的问题,或者让你的问题更加明显

挂起同步接收确实表明Java没有将数据发送到c#正在侦听的同一个套接字,因此仔细检查这些端点也是一个好主意。

希望能有所帮助!