Я получаю другой номер порта, чем я использую - PullRequest
1 голос
/ 17 января 2020

У меня есть 2 java программы, сервер и клиент.

Я пытаюсь подключить клиентскую программу к программе сервера, используя java программирование сокетов.

Вот сервер Программа:

public class ServerX {
   public static void main(String[] args) {
    ServerSocket ss = new ServerSocket(987);
    Socket s = ss.accept();
    InetSocketAddress isa1 = (InetSocketAddress) s.getRemoteSocketAddress();
    System.out.println(isa1.getPort()); 
    ss.close();
  }
}

А вот программа клиента:

public class ClientX {
   public static void main(String[] args) {
      Socket s = new Socket("ip of the server", 987);
      s.close();
   }
}

Я ожидал, что isa1.getPort() в программе сервера дает 987, но на самом деле вместо этого 52532 , Так в чем же проблема и что означает 53532?

Ответы [ 2 ]

1 голос
/ 17 января 2020

Не уверен по требованию здесь. Но если вы будете sh выполнять проверку работоспособности порта Stati c, а использование Java не является предварительным курсором, то я считаю, что приведенный ниже скрипт должен вам помочь. Я обращался к Python Документам (https://docs.python.org/2.6/library/socket.html) для получения помощи в прошлом по одному из требований моего проекта.

'''    Simple socket server using threads
'''
import socket
import sys
HOST = ''   # Symbolic name, meaning all available interfaces
PORT = 61901 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
#Bind socket to local host and port
try:
    s.bind((HOST, PORT))
except socket.error as msg:
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()
print 'Socket bind complete'
#Start listening on socket
s.listen(10)
print 'Socket now listening'
#now keep talking with the client
while 1:
    #wait to accept a connection - blocking call
    conn, addr = s.accept()
    print 'Connected with ' + addr[0] + ':' + str(addr[1])
s.close()

Здесь PORT = 61901 можно заменить требуемым портом .

1 голос
/ 17 января 2020

TCP - это протокол полнодуплексной связи, он означает, что обеим сторонам установленного соединения разрешено отправлять и получать данные.

, поэтому сервер прослушивает порт 987, но на стороне клиента также необходим порт на своей стороне, чтобы получать данные, которые отправляются со стороны сервера и о соединении в случае ClientX, сервер будет прослушивать входящие запросы на номер порта 987, но при желании что-то отправить в ответ на ClientX напишет на порт 53532 соединения

...