Я хочу, чтобы программный код (клиент) мог отправлять сообщение серверу, но java-код, который клиент может подключить к серверу с публичным IP-адресом маршрутизатора, но он не отправляет сообщение, яне знаю почему (¯ (° _o) / ¯). После того, как сервер получит сообщение от другой программы (клиента), он сможет отправить еще одно сообщение программе, которая отправит ему сообщение (клиент), не закрывая сокет или используя ip клиента. Я делаю рисунок, который может объяснить, что я хочу сделать. это его код для клиента
try {
handler.post( new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"start client", Toast.LENGTH_LONG).show();
}
} );
WifiManager manager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
ip = Formatter.formatIpAddress(manager.getConnectionInfo().getIpAddress());
String mess = h[0];
String messag_send=(mess+"<ip>"+ip);
sock = new Socket( "public ip router", 1234 );
printWriter = new PrintWriter( sock.getOutputStream() );
printWriter.write(messag_send);
printWriter.flush();
printWriter.close();
dis = new DataInputStream(sock.getInputStream());
final String message_entrant21;
message_entrant21 = dis.readLine();
Message232 = message_entrant21;
String line = "no";
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
и serveur
import socket
import datetime
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
host, port = ('',1234)
o=False
while o==False:
try:
socket.bind((host, port))
print("le serveur est démarré! o = true")
o=True
except OSError:
o=False
finally:
if(o is not False):
o=True
socket.listen(5)
conn, adress = socket.accept()
print("listening")
response = client.recv(255)
trys=0
while o==False:
try:
socket.sendto(bytes(b'hello you are connected'),conn, adress)
print("le serveur est démarré! o = true")
o=True
except OSError:
o=False
if(trys==10):
print("the programme had tryed 10 times to send the data")
finally:
trys+=1
if(o is not False or trys==10):
o=True
socket.close()
, если кто-то может помочь, прежде всего, помогите мне сделать так, чтобы java-код работал, и отправил сообщение servur и после прослушивания serveur, который отправит обратно сообщение, не закрывая соединениеЯ был бы счастлив, если бы вы знали, почему, когда я использую общедоступный IP-адрес маршрутизатора (в коде Java), я могу подключиться только к serveur и не отправлять сообщение, я был бы очень рад, спасибо, если вы знаете, помогите мнеответ, я пробую много способов, но ни один из них не работает, мне нужно это сделать