2011-05-04 7 views
0
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) {} 
       } 
    } 
} 
+2

throw되는 _exceptions_ 또는 _console output_을 포함하십시오. – mre

답변

0

폐기중인 일부 예외에 대해 StackTrace를 인쇄하려면이 시점에서 도움이 될 수 있습니다. 내 개인 개발 상자에서 나는 보통 8080과 같은 포트에 적어도 1 개의 응용 프로그램 서버를 실행하고 있고, Apache 또는 IIS는 일반적으로 포트 80에서 실행 중이므로 다른 포트가 이미 포트에 바인딩되어 있으므로 예외가 발생하여 첫 번째 catch에 의해 catch됩니다 (예외 e). 제 생각에 Javadoc은 호출이 반환되지 않는다고 말합니다. 그래서 아마도 문제는 아니지만, 스레드를 던져 버리므로 자신의 스레드가있을 수 있습니다. 거기에 다른 연결을 차단, 비록 내가 정말 의심, 그것은 아마도 하나의 "행위자에 의해 결정"행동의 유형입니다.

관련 문제