0

クライアントの C# ソケットと Java サーバー ソケットとの通信に問題があります。問題は、応答を読み取ろうとしたときに発生しました。私のコードはこれです:

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

クライアントがハングします。アプリケーションを停止する必要があります。ソケットサーバーが応答していないようです。ソケット サーバーの仕様は、BitStream を送受信することです。

4

1 に答える 1

1

サーバーの Java コードがないとわかりにくいですが、サーバーが予想される 256 バイトを送信していない可能性が非常に高いようです。Socket.Receive はデフォルトでブロックされているため、クライアントはデータを待ち続けます。

于 2012-10-22T07:56:26.140 に答える