Я пытаюсь настроить базовый клиент на c # для связи с сервером Python.Он может отправить одно «сообщение» на сервер, но при второй попытке выдает исключение System.Net.Sockets.SocketException.
Полная ошибка:
System.IO.IOException: невозможно прочитать данные из транспортного соединения: установленное соединение было прервано программным обеспечением на вашем хост-компьютере.в System.Net.Sockets.Socket.Receive (буфер Byte [], смещение Int32, размер Int32, SocketFlags socketFlags) в System.Net.Sockets.NetworkStream.Read (буфер Byte [], смещение Int32, размер Int32)
Мой код C #:
//This creates a button that sends text entered in 'textbox2' to the server when clicked
private void button1_Click(object sender, EventArgs e)
{
try
{
NetworkStream serverStream = clientSocket.GetStream();
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
byte[] inStream = new byte[4096];
aDataStream.Text = outStream.ToString();
//The line below is where the error occurs, it works the first time but fails the second time I click the button.
int bytesRead = serverStream.Read(inStream, 0, inStream.Length);
string returndata = System.Text.Encoding.ASCII.GetString(inStream, 0, bytesRead);
msg(returndata);
textBox2.Text = "";
textBox2.Focus();
}
catch(Exception ex)
{
Console.WriteLine(ex);
}
}
Это код сервера в python:
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
print("Client Connected")
self.data = self.request.recv(1024).strip()
print("{} wrote:".format(self.client_address[0]))
print(self.data)
self.request.sendall(self.data.upper())
if __name__ == "__main__":
HOST, PORT = "127.0.0.1", 5000
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()