gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:32:02 25 4
gpt4 key购买 nike

我正在使用 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);

告诉我什么问题?请帮忙...

最佳答案

此类 C# 代码的常见问题是同步接收。
我总是建议进行异步读取,如 this answer 中所示。 。

我不确定这就是您问题的根源,但是如果您通过一些日志记录实现了异步接收,那么很有可能会解决您的问题或使您的问题更加明显是。

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

希望有帮助!

关于c# - C# 客户端套接字从 java 服务器套接字接收数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com