Java Socket Constructor, Socket (String hostName, int port), Зависания - PullRequest
3 голосов
/ 22 февраля 2012

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

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

Вот код клиента:

import java.io.*;
import java.net.*;

public class Client{
public static void main(String[] args) throws IOException {

Socket s = null;


try{
    System.out.println("connecting to host...");
    s = new Socket("dagobah", 6464);
}catch (UnknownHostException e) {
    System.err.println("Can't connect");
    System.exit(1);
}
System.out.println("Connected to host");


s.close();
}

}

Вот код сервера:

import java.net.*;
import java.io.*;
import java.util.*;


public class server{
public static void main(String[] args) throws IOException{


ServerSocket serverSocket = null;
try{
    serverSocket = new ServerSocket(6464);
}catch (IOException e){
    System.err.println("fail to start server");
    System.exit(1);
}
System.out.println("Server started : )");



Socket clientSocket = null;
try{
    System.out.println("waiting for a client...");
    clientSocket = serverSocket.accept();
} catch (IOException e) {
    System.out.println("fail can't accept client connection");
    System.exit(-1);
}
System.out.println("client connected");


clientSocket.close();
serverSocket.close();
}

}

Клиентникогда не преодолевает блок try

вывод клиента: подключение к хосту ...

вывод сервера: сервер запущен:) ожидание клиента ...

С момента публикацииНа этот вопрос я узнал, что это проблема, характерная для моего компьютера.Я использую Linux 2.6.38-11-generic x86_64 GNU / Linux Ubuntu Natty

Любая помощь будет высоко оценена!:)

Ответы [ 3 ]

4 голосов
/ 22 февраля 2012

У вас проблема с конструктором Socket.Проверьте, как вы пытаетесь разрешить dagobah в IP-адрес.Попробуйте свой код с localhost или 127.0.0.1.

Я пытался, и он прекрасно работает.

4 голосов
/ 22 февраля 2012

Конструктор Socket на самом деле не подключается, но пытается преобразовать имя хоста в IP-адрес.Похоже, что в этом случае разрешение имени занимает много времени, и в конечном итоге истекает время, выдавая UnknownHostException.Я слышал, что это может занять несколько минут в Windows.

Как разрешается dagobah по DNS или?Попробуйте использовать IP-адрес вместо имени.

2 голосов
/ 22 февраля 2012

Попробуйте заменить свою линию

s = new Socket("dagobah", 6464);

с

s = new Socket("127.0.0.1", 6464);

Это может решить ваш запрос. Похоже, что ваш dagobah на самом деле не ваш HostName, как указано вами. Проверьте это еще раз, щелкнув правой кнопкой мыши на «Мой компьютер» и перейдите в «Свойства» и найдите имя в разделе «Имя компьютера». Приведенная выше строка решит проблему для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...