Socket
Там программа-сервер создаёт ServerSocket и вызывает для него метод accept().
Программа клиент должна к нему подключиться по указанному IP адресу.
Почему-то единственное место где это работает - локальная сеть у меня дома.
При подключении через интернет клиент не находит сервер.
Что можно сделать?
Описание ошибки полное выложи ты.
Непонял.
Что значит пингуется?
Чем реальный IP отличается от НЕреального?
[QUOTE=Zorkus]Описание ошибки полное выложи ты.[/QUOTE]
Он сообщает, что на заданном IP и порте никакого ServerSocket-а нету.
(IOException)
Что значит пингуется?
ICMP пакеты до него доходят? ЧТо утилита ping говорит?
Чем реальный IP отличается от НЕреального?
тем что реальный - тот который доступен в интернете. А есть диапозоны IP-адрессов как раз специально предназначенных для локальных сетей, и конечно они не доступны в интернете.
Он сообщает, что на заданном IP и порте никакого ServerSocket-а нету.
(IOException)
Покажи какой IP ну и порт.
ping <ip-адрес-вашего-сервера>
В консоли.
Говорит, что отправлено и принято 4 пакета по 32 байта.
IP 62.148.156.189
порт 80
[QUOTE=P*t*]Он сообщает, что на заданном IP и порте никакого ServerSocket-а нету.
(IOException)[/QUOTE]
Иногда ещё просто виснет и не подаёт признаков жизни.
[QUOTE=gruz0]Интересно писать сетевые приложения, не зная сетевых технологий, не правда ли? [/QUOTE]
Да, мне уже приходила мысль что надо было что-нибудь почитать на эту тему...
Впрочем ещё не поздно.
С того же компа, где сервер.
Надо с другого компа, который должен будет подключаться к серверу по инету. И главное, чтобы между ними не было другого пути.
Это 2D игра. Ездишь на танке и стреляешь в противников.
Сервер 30 раз в секунду передаёт клиенту координаты противников.
Клиент при каждом нажатии или отпусканием пользователем кнопки на клавиатуре посылает один байт серверу.
Впрочем это не важно - клиенту не удаётся даже создать сокет.
Часть кода сервера:
while (true) {
Socket socket = s.accept();
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
newClientConnected(in, out);
}
Часть кода клиента:
Socket socket = new Socket(addr, port);
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
serverFind(in, out);
}
По идее коннектится в конструкторе сокета:
На сервере запускается serverSocket.accept();
Клиент создаёт сокет;
Сокет в конструкторе коннектится к серверу;
serverSocket.accept() возвращает сокет для связи с клиентом;
Проблема в том, что сокет не создаётся - поток виснет.
В serverFind(in, out) создаются потоки читающие из in и записывающие данные в out.