На основании комментария, где упоминается следующий фрагмент кода:
requestSocket = new Socket("10.0.0.5", 2004); // ip from ipconfig
было бы лучше использовать имя хоста вместо IP-адреса в конструкторе, поскольку двухпараметрический конструктор Socket с аргументом String ожидает имя хоста в виде строки, а не IP-адрес. Затем выполняется поиск IP-адреса на предоставленном имени хоста.
Если вам нужно передать IP-адрес, используйте двухпараметрический конструктор , который принимает InetAddress в качестве аргумента. Затем вы можете указать необработанный IP-адрес для метода InetAddress.getByAddress
, как показано в следующем фрагменте:
InetAddress addr = InetAddress.getByAddress(new byte[]{10,0,0,5});
Вы должны быть осторожны при указании аргументов через байтовый массив, так как байты подписаны в Java (от -127 до +128), и возможно, должны быть указаны числа за пределами этого диапазона (но допустимые октеты IP-адресов) используя Integer.byteValue
.
Наконец, следует отметить, что важно указать IP-адрес удаленного компьютера, который будет виден клиенту. IP-адрес, указанный на myipaddress.com, может быть адресом прокси-сервера, так как это общедоступный IP-адрес всей вашей сети, видимый хост-серверу на myipaddress.com. Поэтому вам следует указать IP-адрес удаленного компьютера, который виден вашему компьютеру, а не myipaddress.com.