2011-12-10 3 views
0

멀티 소켓 프로그램 (클라이언트와 서버 모두)을 구현하려고합니다. 약간의 인터넷 검색 후, 나는 그것을하는 것이 Runnable을 구현하는 것이라고 생각했다. 이제는 내가 만든 각각의 스레드가 .start()가 다른 클라이언트라고 가정합니다.기본 멀티 소켓 프로그램

- 어떤 데이터를 받아 정확한 라인은 다음과 같습니다

은 내가 어렵다고 생각하는 것은 2 가지를 이해하는 것입니다? 이 메서드는 특정 클라이언트와 연결을 시작하는 데 사용되기 때문에 Server.accept() 메서드가 아닌 것 같습니다 (위에서 언급 한 것처럼 새 스레드를 만들어서).

- 두 개 이상의 패킷을 허용 할 수있는 방법 (문자열이라고 가정 해 봅시다)?

답변

2

약간 수정하면 새로 작성한 모든 스레드는 start()으로 시작하고 새 클라이언트를 처리하는 새 서버 스레드가됩니다.

데이터를 받아들이는 정확한 줄은 어느 것입니까?

하는 클라이언트에서 데이터를 수락하려면, 당신은 몇 가지 입력 스트림으로 클라이언트의 입력 스트림을 포장 한 후 입력 스트림의 각각의 읽기 함수를 호출해야합니다.

이 그냥 예입니다
void readx(Socket con) 
{ 
    String line=new String(); 
    BufferedReader bin= new BufferedReader(new InputStreamReader(con.getInputStream()); 
    while((line = bin.readLine()) != null) //Read new lines coming from the server 
     System.out.println(line); 
} 

, 당신은 DataInputStream 같은 다른의 InputStream 래퍼와 각각의 읽기 기능을 가질 수 있습니다.

어떻게 하나 이상의 패킷을 허용 할 수 있습니까 (문자열이라고 가정 해 봅시다)?

위의 스 니펫은 클라이언트가 스트림의 끝 문자를 보낼 때까지 클라이언트의 데이터를 연속적으로 수락합니다 (행 수 있음).