Прежде чем отвечать, обратите внимание, что это проблема на стороне клиента, а не проблема с сервером. Поскольку я использовал telnet в терминале, чтобы подключиться к серверу, и telnet смог подключиться к серверу. Теперь я не знаю, почему метод подключения не может подключиться. Я использовал как адрес localhost, так и частный IP-адрес сервера. Он просто блокирует и никогда не вызывает метод обратного вызова.Блоки метода Java Socket Когда «connect» называется
client.connect(new InetSocketAddress(hostname, 1993));
callback.onConnection(); // Never invokes!
OutputStream writer = client.getOutputStream();
InputStream reader = client.getInputStream();
byte[] buffer = new byte[1024 * 1024];
P.S Я делаю что-то неправильно. Это не может быть проблемой межсетевого экрана, поскольку telnet смог подключиться к серверу, и я думаю, что у меня нет брандмауэра, так как я запускаю этот код на своей машине Ubuntu. И сервер, и клиент используют протокол TCP, и никакое исключение не выбрасывается ни на стороне клиента, ни на стороне сервера. Любое предложение о том, что может быть неправильным, может быть очень полезным. Я могу показать больше кода, например, код sever. Сервер написан на C++, а клиент написан на Java.
Edit:
я, наконец, смог установить соединение. Вместо использования метода connect, который я вызываю через соединение, используя конструктор сокета. Я не знаю, почему соединение не работает?
Вот модификация коды:
client = new Socket(hostname, port);
callback.onConnection();
OutputStream writer = client.getOutputStream();
InputStream reader = client.getInputStream();
byte[] buffer = new byte[1024 * 1024];
reader.read(buffer);
Предложение: получить копию Wireshark и проследить, что происходит в 3-этапного: http://www.wireshark.org – paulsm4
Что такое 'callback'? – biziclop