我的TCPIP Server-Client连接有问题。
在服务器启动时。
{
serverSocket = new TcpListener(IPAddress.Parse(ipServer), portServer);
serverSocket.Start();
TcpClient clientSocket = default(TcpClient);
clientSocket = serverSocket.AcceptTcpClient();
try
{
while (true)
{
NetworkStream nwStream = clientSocket.GetStream();
byte[] buffer = new byte[clientSocket.ReceiveBufferSize];
nwStream.Read(buffer, 0, (int)clientSocket.ReceiveBufferSize);
string getdata = Encoding.ASCII.GetString(buffer);
getdata = getdata.Substring(0, getdata.Length);
ServerTextTB.Text = getdata;
string serverresponse = "Response";
byte[] sendbuffer = Encoding.ASCII.GetBytes(serverresponse);
nwStream.Write(sendbuffer, 0, sendbuffer.Length);
nwStream.Flush();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
clientSocket.Close();
serverSocket.Stop();
}
当客户端发送消息时。
{
TcpClient clientSocket = new TcpClient();
clientSocket.Connect(ipClient, portClient);
nwStream = clientSocket.GetStream();
byte[] buffer = Encoding.ASCII.GetBytes(clienttext);
nwStream.Write(buffer, 0, buffer.Length);
nwStream.Flush();
byte[] inStream = new byte[clientSocket.ReceiveBufferSize];
nwStream.Read(inStream, 0, clientSocket.ReceiveBufferSize);
string returndata = Encoding.ASCII.GetString(inStream);
MessageBox.Show(returndata);
clientSocket.Close();
clientTextTB.Clear();
}
我的问题是,每次我试图向服务器发送消息时,在我的on server start methode中的第62行( nwStream.Read(buffer, 0, (int)clientSocket.ReceiveBufferSize); )得到一个System.IO.IOException。
删除Trycatch后,我得到以下错误。
System.IO.IOException: 'Von der Übertragungsverbindung können keine Daten gelesen werden: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen.
'
翻译成英文就是这样的意思。
System.IO.IOException: Unable to read data from transport connection : An existing connection was closed by host.
有什么办法可以解决这个问题吗? 服务器和客户机都在同一台电脑上运行
问候& 谢谢
你的客户端在读回服务器的消息后关闭,而服务器继续循环,并在 "读 "中阻塞,等待客户端的消息。当客户端关闭连接时,服务器得到一个异常。
如果你想避免这种情况,你可以这样做 -移除循环,即在服务器端发送回消息给客户端后关闭套接字 -在客户端做一个类似的循环(连续写和读消息给服务器)。