我正嘗試使用套接字連接到應用程序。無法從服務器接收消息的套接字
應用程序使用端口6100進行通信。 我能夠將消息發送到應用程序,但無法接收任何消息。
這是我的代碼,請讓我知道如果我做錯了什麼。
public void Connect2(string host, int port, string cmd)
{
byte[] bytes = new byte[10024];
IPAddress[] IPs = Dns.GetHostAddresses(host);
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
s.SendTimeout = 100;
Console.WriteLine("Establishing Connection to {0}",
host);
try
{
s.Connect(IPs[0], port);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
byte[] sendBites = System.Text.Encoding.ASCII.GetBytes(cmd);
int bytesSent = s.Send(sendBites);
int bytesRec = s.Receive(bytes);
s.ReceiveFrom(bytes, ref tmpRemote);
MessageBox.Show(s.ReceiveBufferSize.ToString());
MessageBox.Show(Encoding.ASCII.GetString(bytes, 0, bytesRec));
s.Shutdown(SocketShutdown.Both);
s.Close();
}
此代碼已損壞。它無法檢查來自'Receive'的返回值,它告訴你有多少個字節已經放入緩衝區。 TCP是字節流。如果你想要「消息傳遞」,你可以自己在TCP之上實現消息組幀,或者移動到已經提供消息的更高層抽象。 –