2011-01-15 4 views
1

확인 유형 ServerWorker에 대한 정의, 난하지만 난이 정확해야한다고 생각 무언가가이 오류방법의 시작은() ..... (자바의 Runnable)


package com.mdog.tcpserver; 
import java.net.*; 
import java.io.*; 

public class ServerDriver { 


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

     ServerSocket serverSocket = null; 
     boolean listening = true; 

     /* bind welcome socket to port */ 
     try { 
      serverSocket = new ServerSocket(1313); 
     } catch (IOException e) { 
      System.err.println("Could not listen on port: 1313."); 
      System.exit(1); 
     } 


     /* assign thread to each client */ 
     while(listening){ 
     new ServerWorker(serverSocket.accept()).start(); 
     } 

     /* close the socket and quit */ 
     serverSocket.close(); 
     return; 
} 
} 




 
--------- 


package com.mdog.tcpserver; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.Socket; 

public class ServerWorker implements Runnable { 

    private Socket socket = null; 

public ServerWorker(Socket s){ 
    super(); 
    this.socket = s; 
} 



public void run() { 

     (stuff happens) 

    } 
} 


 
에게 나에게 제공하기 전에 자바 스레딩 했어

이 줄에 오류가 있습니다. "new ServerWorker (serverSocket.accept()). start();" 그것은

답변

1

미안 의견에 주석을 추가하는 방법을 모른다 "방법의 시작은() 타입 ServerWorker에 대한 정의되지"... 말한다. 하지만

잠시 동안 새 스레드를 시작 하시겠습니까 ??? 이 코드는 잠시 후에 충돌합니다.

이 잘못되었습니다. accept() 블록. 새 소켓 (연결 클라이언트라고도 함) 각각에 대해 새 스레드가 만들어집니다 (또는 올바른 응답이 이미 주어진 것처럼). while 루프와 다른 루프 사이에서 새로운 스레드를 시작하는 것은 아무 문제가 없습니다.

+0

당신이 옳습니다, 사과드립니다. – fiction

+0

댓글을 달려면 50 회 담당자가 필요합니다. 나는 단지 의견을 추가 할 수 있도록 담당자가 필요하다고 생각하는 이유를 이해하지 못합니다. http://stackoverflow.com/privileges/comment – Nishant

+0

그래, 마침내 알아 냈어. 감사. –