Что-то не так с моей программой для сокетов - PullRequest
0 голосов
/ 09 мая 2011

Я написал программу, связанную с сокетами. Но я не знаю, почему они не работают.

Код сервера:

this.serverSocket = new ServerSocket(ServerConnector.port);
        this.socketListener = this.serverSocket.accept();
        System.out.println(this.socketListener.getPort());

        this.objIn = new ObjectInputStream(this.socketListener.getInputStream());
        System.out.println("1");

        this.objOut = new ObjectOutputStream(this.socketListener.getOutputStream());
        System.out.println("1");

        this.objOut.writeInt(19999);
        System.out.println("1");

        this.objOut.writeObject(new Date());
        System.out.println("1");

Код клиента:

this.clientSocket = new Socket(ClientConnector.host, ClientConnector.port);

        System.out.println(this.clientSocket.getPort());
        this.objIn = new ObjectInputStream(this.clientSocket.getInputStream());
        System.out.println("1");
        this.objOut = new ObjectOutputStream(this.clientSocket.getOutputStream());
        System.out.println("1");

        int i = (Integer) this.objIn.readInt();
        System.out.println(i);
        Date date = (Date) this.objIn.readObject();

Правда в том, что они не показывают никакой информации, которую я предлагал пройти (19999 и дата), они даже не могут напечатать строку «1» (я добавил для тестирования).Это означает, что даже строка ниже не может работать нормально.Я действительно смущен этим, кто может понять ошибку?

this.objIn = new ObjectInputStream(this.clientSocket.getInputStream());

1 Ответ

0 голосов
/ 15 апреля 2012

Скорее всего, вы испытываете эффект Алгоритм Нейгла . который пытается оптимизировать отправку пакетов в TCP. Если вы хотите отправить ваши данные немедленно, вам нужно отключить их, используя метод setTcpNoDelay в интерфейсе сокета.

P.S. не знаю, почему вопрос помечен как osgi , так как он вообще не имеет отношения к OSGi.

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