Java套接字服务器和客户端套接字c#问题

Java套接字服务器和客户端套接字c#问题,c#,java,sockets,bitstream,C#,Java,Sockets,Bitstream,我在使用java服务器套接字与客户端c#socket通信时遇到问题。 问题来自于我试图阅读回复的时候。我的代码是: IPHostEntry IPHost = Dns.Resolve("IP_ADDRESS"); Console.WriteLine(IPHost.HostName); string []aliases = IPHost.Aliases; IPAddress[] addr = IPHost.AddressList; Console.WriteLine(addr[0]); EndPo

我在使用java服务器套接字与客户端c#socket通信时遇到问题。 问题来自于我试图阅读回复的时候。我的代码是:

IPHostEntry IPHost = Dns.Resolve("IP_ADDRESS");
Console.WriteLine(IPHost.HostName);
string []aliases = IPHost.Aliases; 
IPAddress[] addr = IPHost.AddressList;
Console.WriteLine(addr[0]);
EndPoint ep = new IPEndPoint(addr[0],1024); 
Socket sock =
   new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sock.Connect(ep);
if(sock.Connected)
   Console.WriteLine("OK");
Encoding ASCII = Encoding.ASCII;
string Get = "A";
Byte[] ByteGet = ASCII.GetBytes(Get);
Byte[] RecvBytes = new Byte[256];
sock.Send(ByteGet, ByteGet.Length, 0);
Int32 bytes = sock.Receive(RecvBytes, RecvBytes.Length, 0);
Console.WriteLine(bytes);
String strRetPage = null;
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
while( bytes > 0 ) {
   bytes = sock.Receive(RecvBytes, RecvBytes.Length, 0);
   strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
   Console.WriteLine(strRetPage );
}
sock.Close();
在代码行

Int32 bytes = sock.Receive(RecvBytes, RecvBytes.Length, 0);
我的当事人被绞死了。 我必须停止申请。似乎不响应套接字服务器。
套接字服务器的具体功能是发送和接收比特流。

如果没有服务器的Java代码,很难判断,但很可能服务器没有发送预期的256字节。由于Socket.Receive在默认情况下是阻塞的,因此客户端一直在等待数据。

Socket在默认情况下是阻塞的,因此除非您发送任何内容,否则
Receive
调用将阻塞(即“挂起”)。我使用命令sock.send(ByteGet,ByteGet.Length,0)发送;是,您发送到服务器,但服务器是否会发回?我建议使用这样的工具来查看数据是否真的应该来回移动。我使用wireshark,服务器返回我,但c#中的客户端套接字似乎无法读取数据,我不知道是否存在兼容性问题或其他问题,我还认为客户端无法读取数据,因为数据太小。
Receive
调用将重新读取请求的字节数,但如果没有更多字节,则读取的字节数可能会更少。
而(bytes>0)
我想,这一条件永远不会满足,因此,蒂姆是对的:客户永远在等待<代码>读取可能读取的内容少于预期,是。但是必须至少有一些东西或连接被关闭,才能“解除”读取的
,AFAIK.so。。。我可以使用Byte[]RecvBytes=新字节[1];1字节?我如何知道要读取的字节的正确大小?socket服务器是否可能发送给我的不是一个字节而是一些位?而使用c#socket客户端,我将永远无法读取响应?恐怕。。。关于这一点,我将首先检查服务器是否正在发送任何内容,以及套接字是否正在关闭。