我在 C# 和 JAVA 通信时,遇到一个问题server 端是 JAVA
client 端是 C#都是使用的大循环模式,即发送消息-〉等待回复-〉发送消息...当用 client 向 server 发送消息时, server 一直等待,未收到消息
当 client 强制退出时, server 收到 connection reset 的异常。请高人指点为什么?以及如何使 server 能收到消息。client 端部分代码...
s = Console.ReadLine();
byte [] data = Encoding.Text.UTF8.GetBytes(s);
socket.Send(data);
byte [] recv = new byte[2048];
int count = 0;
do
{
 count = socket.Receive(recv);
 if(count == 0)
  break; Console.Write(Encoding.UTF8.GetString(recv, 0, count));
}while(count != 2048);
...

解决方案 »

  1.   

    补充一下,是在只能修改 client 的条件下
      

  2.   

    这只是试验用的东西哈,server 绝对没问题。
      

  3.   

    个人认为可能是 server 读取时终止符的问题。
    如果可以在client端把该终止符加上,应该就没有什么问题吧。
    问题是,那个终止符又是什么呢?
      

  4.   

    当用 client 向 server 发送消息时, server 一直等待,未收到消息:这个问题很怪,如果楼主的客户端已经连接上服务器,怎么发送,服务器也应该收到一些东西。楼主可以尝试用try来获取错误,如果没有错误,可以自己写一个服务器端(网上也有的下),进行测试,看看自己写的服务器能不能收到数据,以保证你的客户端正确。如果你的客户端也是正确的,那服务器端是否有一些内部约定,比如数据包不能超过一定大小,加自定义校验和等。当 client 强制退出时, server 收到 connection reset 的异常。一个现有的连接被remote host强行关闭,这通常由远程程序被突然关闭、远程计算机重启或者一些硬件上面的原因。可以认为此错误(errorcode10054)为连接异常关闭。
      

  5.   

    To kissnono(塔.拉夏的灵魂)client 确实连接上了 server, 并且发出了信息,但是 server 一直等待发送的数据。
    今天下午我准备搞个 java 的 client 和 C# 的 server 看看,用 java 的 client 话,到底收到了什么东西。顺便说一下,C# 写的 server 可以收到 C# 的 client 发出的消息
      

  6.   

    呵呵,不用了,写 Server 的“高人”说,它要求+ 0xFE.....
    我郁闷
    麻烦各位了