2010-03-22 4 views
2

이 코드가 있습니다getInputStream을 찾을 수없는 이유는 무엇입니까?

ServerSocket serverSideSocket = new ServerSocket(1234); 
     serverSideSocket.accept(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream())); 

을 그리고 컴파일러는 "는 getInputStream"를 찾을 수없는 저를 씁니다. 나는 왜 그런지 이해하지 못한다. 내 코드의 시작 부분에 가져 오기 java.net.*.

+4

http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html#accept() –

+0

설명서를 읽는 중 스타일이 다시 바뀌 었습니까? – Bombe

답변

8

accept을 호출하면 getInputStream 메서드가 필요한 Socket의 인스턴스가 반환됩니다.

코드는 다음과 같습니다

ServerSocket serverSideSocket = new ServerSocket(1234); 
Socket socket = serverSideSocket.accept(); 
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
어떻게 자바에서 소켓 작업을하는

큰 튜토리얼 : http://java.sun.com/docs/books/tutorial/networking/sockets/index.html

0

이 개념적으로 ServerSocket 사용할 수 있습니다 직접 연결 개체를 제공하지 않기 때문에 데이터를 보내고받습니다. ServerSocket.accept() 메서드와 함께 사용하여 클라이언트가 연결을 시도 할 때 선택한 포트에서 수신 대기하고 새로운 실제 연결을 생성 할 수있는 도구입니다.

그 이유는 ServerSocket에서 InputStream을 얻을 수없는 이유입니다. 많은 클라이언트가 동일한 서버에 연결할 수 있기 때문에 모든 클라이언트는 서버 소켓이 새로운 Socket (열린 TCP 연결)을 생성하도록합니다. .accept()에서이 서버를 통해 InputStreamOutputStream을 사용하여 보내고받을 수 있습니다.

관련 문제