Как отправить более одного «сообщения» на мой сервер?System.Net.Sockets.SocketException - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь настроить базовый клиент на 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...