Python Socket Получать информацию только когда сокет закрыт - PullRequest
1 голос
/ 23 декабря 2019

Я создаю программу для игры в шахматы через розетку. Мой клиент написан на Python, который использует сокет для отправки данных на сервер. Я получаю информацию только тогда, когда клиентская программа закрывается. Ниже упоминается код клиента. Я использую python socket https://docs.python.org/3/library/socket.html

def youSecond(board):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(('192.168.11.46', 9999))
        run = True
        turn = 1
        new_msg = True
        while run:
                renderMap(board)
                move = s.recv(1024).decode("utf-8")
                if new_msg:
                        new_msg = False
                print("SERVER: ", move)
                players[0].play(board, move)
                new_msg = True
                turn +=1
                renderMap(board)
                print("Black machine is thinking.....")
                myTurn = players[1].play(board, turn).encode("utf-8")
                s.send(myTurn)
                turn += 1

, а мой сервер использует Java

  public class ClientHandler implements Runnable {

        BufferedReader reader;
        Socket sock;
        PrintWriter client;

        public ClientHandler(Socket clientSocket, PrintWriter user) {
            client = user;
            try {
                sock = clientSocket;
                InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
                reader = new BufferedReader(isReader);
                System.out.println("tren helllo");

            } catch (Exception ex) {
                ta_chat.append("Unexpected error... \n");
            }

        }

        @Override
        public void run() {
            String message, connect = "Connect", disconnect = "Disconnect", chat = "Chat";
            String[] data;

            try {
                while ((message = reader.readLine()) != null) {
                    System.out.println("duoi helllo");
                    ta_chat.append("Received: " + message + "\n");
                    data = message.split(":");

                    for (String token : data) {
                        ta_chat.append(token + "\n");
                    }

                    if (data[2].equals(connect)) {
                        tellEveryone((data[0] + ":" + data[1] + ":" + chat));
                        userAdd(data[0]);
                    } else if (data[2].equals(disconnect)) {
                        tellEveryone((data[0] + ":has disconnected." + ":" + chat));
                        userRemove(data[0]);
                    } else if (data[2].equals(chat)) {
                        tellEveryone(message);

                        try {
                            FileWriter fw = new FileWriter("C:\\Users\\Admin\\Desktop\\FixCoTuong\\moves.txt");
                            fw.write(data[1]);
                            fw.close();
                        } catch (Exception e) {
                            System.out.println(e);
                        }
                        System.out.println("sucess");
                    } else {
                        ta_chat.append("No Conditions were met. \n");
                    }
                }
            } catch (Exception ex) {
                ta_chat.append("Lost a connection. \n");
                ex.printStackTrace();
                clientOutputStreams.remove(client);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...