Мне нужно создать приложение, которое может получать данные из сети и использовать эти данные, чтобы делать некоторые не относящиеся к делу вещи.Сокеты в Java ...?
Вот фрагмент кода, чтобы ясное представление о том, что я делаю.
На стороне сервера:
static Socket client = null;
static ServerSocket ss = null;
if (ss != null) {
ss.close();
}
ss = new ServerSocket(5513);
isrunning = true;
System.out.println("Waiting for client...");
client = ss.accept();
System.out.println("Client accepted.");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
И на стороне клиента:
Socket client = null;
PrintWriter out = null;
try {
client = new Socket("hostname", 5513);
out = new PrintWriter(client.getOutputStream(), true);
}
Пожалуйста, обратите внимание, что это просто кусок кода. Ошибок в коде нет.
После запуска серверной части кода он правильно ожидает подключения клиента.
Теперь возникает проблема. Как только я пытаюсь подключиться со стороны клиента, я получаю «соединение отказано» -error.
ОДНАКО, я нашел что-то в Интернете, который сказал мне, чтобы я попробовал telnetting с клиентской стороны. Например, пусть серверный IP-адрес будет 192.168.1.1. Итак, после использования этой команды:
telnet 192.168.1.1 5513
Фактически я получаю подключение к серверу. Команда запустит пустой экран, и все, что я вручную напечатаю в командной строке, будет отправлено на серверную сторону после нажатия enter (проверено с помощью отладки).
Итак, я могу вручную подключиться к серверу и отправить некоторые данные, но мой код отказывается подключиться.
Любой, кто знает, что я делаю неправильно?
Я не уверен, почему именно вы терпите неудачу, но я получил сокеты, которые легко запускались с помощью этих двух учебников: http://android-er.blogspot.com/2011/01/implement-simple-socket-server-in. html и http://android-er.blogspot.com/2011/01/simple-communication-using.html – HannahMitt
@ Ханна Митт, он забыл цикл while. Сервер даже не прослушивает подключения более чем на секунду. Как только сервер делает одно соединение, это делается и больше не будет слушать. –
Как я уже сказал, это всего лишь фрагмент кода. На самом деле я использую цикл while. Кроме того, метод accept() будет ожидать установления соединения, поэтому я могу позволить серверу ждать часа, чтобы установить первое соединение. После этого он начнет цикл с другого соединения. –