Не удается подключиться через сокет для программы клиент / сервер - PullRequest
0 голосов
/ 04 мая 2011
package server;

import java.net.*;  // for network 
import java.util.*; // for utilities
import java.io.*;   // for streams

import server.ex12ClientThread;


public class ex12Server implements ex12Constants
{

    public static void main(String args[])
    {

int well_known_port     = SERVERPORT; // default port value 
        ServerSocket serverSock = null;

        ex12ClientThread thread = null;

        try  { // to get a port number
            if ( args.length > 0 )
            {
                well_known_port = Integer.parseInt(args[0]);
                        //initialises port number to connect to
            }

        } catch (NumberFormatException e ) {} // do nothing accept default.

        try
        {


            serverSock = new ServerSocket( well_known_port, 10 ) ;


            // information to log file (ie screen)
            System.out.println("ServerSocket " + serverSock.toString());
            System.out.println("Entering server loop");



            while( true ) // Main Server loop
            {
                Socket clientSocket = serverSock.accept();

                thread = new ex12ClientThread(clientSocket);
                                thread.setDaemon(true); 
                thread.start();



                        }   

                } catch( Exception e )
{ 
            System.err.println( "Socket Error!!!." ) ; 
            System.exit(1) ; 
        }
        finally
                {
                    try
                    {
                        serverSock.close();
                    }
                    catch (IOException e) {}
                }
    }
}

1 Ответ

0 голосов
/ 04 мая 2011

Это может помочь, по крайней мере, на этом этапе, если вы будете печатать StackTrace на некоторых из тех исключений, которые вы отбрасываете. Я знаю, что в моем личном окне разработки я обычно запускаю как минимум 1 сервер приложений на порт, например 8080, и у меня либо Apache, либо IIS, обычно работающий на порту 80, поэтому, если что-то еще уже привязано к порту, исключение будет выброшено и поймано этим первым уловом (исключение e). Вы можете выйти из приложения до того, как закроете, а также, как я думаю, Javadoc говорит, что вызов не возвращается, так что, хотя это, вероятно, не проблема, так как вы выбрасываете потоки, у вас могут быть собственные потоки. блокирование других соединений, хотя я действительно сомневаюсь, что это, вероятно, один из тех типов поведения, которые определяются реализатором.

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