我现在有这么一个简单的通信需求。在服务器端有一个Listener在监听,客户端发起一个连接,服务器端接受该连接,然后发送一个消息给客户端;客户端接收到消息后,就可以结束本次通信了。
程序也基本实现了,如下所示:
服务端:
IPAddress localip = IPAddress.Parse("192.168.1.113");
listener = new TcpListener(localip, 3571);
listener.Start();
while(true)
{
//等待客户端连接;
TcpClient client = listener.AcceptTcpClient();
//确定连接后,发送信息;
String msg = “test message”;
NetworkStream clientStream = client.GetStream();
byte[] temp = Encoding.Unicode.GetBytes(msg);
clientStream.Write(temp, 0, temp.Length);
//发送完毕后关闭连接;
client.Close();
}
客户端:
//连接服务器
client = new TcpClient();
try
{
client.Connect("192.168.1.113", 3571);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//读取信息
NetworkStream serverStream = client.GetStream();
byte[] buffer = new byte[BufferSize];
int bytesread = serverStream.Read(buffer, 0, BufferSize);
String message = Encoding.Unicode.GetString(buffer, 0, BufferSize);
MessageBox.Show(message);
//关闭连接
client.Close();
服务器端接受到客户端的连接请求后,立马发送消息,然后关闭连接。客户端则连接成功后,立马读取消息,然后关闭连接。我的问题就是:是否会存在这么一种情况:服务器发送完消息,然后关闭连接;客户端还没来得及读取,服务器端就关闭连接了,会不会读取不到信息???
(本人第一次接触网络编程,希望各位高手指教)
是这样,我的目的就是客户端与服务器连接后,服务器给客户端发个消息就完事了,结束通信。我想知道的就是在服务器端发送完消息,然后调用Client.Close();客户端会不会收不到消息?
追答我个人觉得不会收到,信号不像物质有惯性,还可以继续运动,要传输信息必须有连接吧。不过我也不是很懂。