Как я могу отправить сообщение с Java на Python с использованием сокетов и переадресации портов, почему блоки printwritter блокируются при использовании переадресации портов - PullRequest
0 голосов
/ 28 октября 2019

Я сделал некоторый код для отправки сообщения из Java на Python с использованием сокета, но, как обычно, мой код сможет подключиться и отправить сообщение серверу. Он может подключаться только к serveur и отправлять данные с частного ip, но когда я хотел подключиться откуда угодно, я использовал перенаправление портов, но я был удивлен, потому что мой Java-код мог подключиться к серверу Python, но не смог отправить текст на него,Я не знаю почему, потому что раньше он работал, потому что я пытаюсь отправить и получить, не закрывая сокет, для сервера, который является кодом на Python, и для клиента, который пытается отправить и получить сообщение, не закрывая сокет. Это были единственные изменения, которые я сделал, которые могли объяснить, почему я не могу отправить текст, чтобы помочь вам поставить код, я был бы рад помочь вам, если у вас возникнут вопросы по коду. Спасибо за помощь.

sock = new Socket( "public ip router", 1234 );

printWriter = new PrintWriter( sock.getOutputStream() );

printWriter.write("hello world");
printWriter.flush();
printWriter.close();
dis = new DataInputStream(sock.getInputStream());
final String message_entrant21;

message_entrant21 = dis.readLine();
Message232 = message_entrant21;

и сервер в Python

import socket

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
    host, port = ('',1234)

    socket.bind((host, port))

    socket.listen(5)
    conn, adress = socket.accept()
    print("listening")
    response = socket.recv(255)
    print(response)

    socket.send(bytes(b'hello'))

    socket.close()
...