서버와 클라이언트의 socket에서 getinputStream()을 두번 호출 해서 사용할 경우
싸리
서버와 클라이언트의 연결을 실행 socket 객체를 생성
서버와 클라이언트에서 문자열 과 객체를 동시에 주고 받을려고 구상중 스트림 쪽 오류
안녕하세요
tcp/ip 공부 하다가 질문드립니다.
현재 서버와 클라이언트를 연결 하고 난 뒤에
//sock은 서버 와 연결이 된 소켓
//문자열을 보내기 위한 스트림을 하나 만들고
bufferedwriter br=new bufferedwriter(new outputstreamreader(sock.getoutputstream()));
//객체를 만들기 위한 스트림을 만들고
objectoutputstream oos=new objectoutputstream(sock.getoutputstream());
이런식으로 하나의 socket에서 outputstream을 2개 끄집어 내서 각각 문자열 그리고 객체 용으로 사용 할려고 하니까
에러가 나드라고요
그래서 포트를 달리 해서 연결을 따로 따로해서 한 연결당 스트림을 하나씩 사용하니까 오류가 없었습니다
그래서 내린 결론이 각 포트당(연결당) 스트림은 독립적으로 사용이 가능하구나(같이 사용 못하구나) 라는 생각을 했습니다
제가 생각하는 것이 맞는지요???
답변 부탁드립니다 ^^;
-
한길찬
OutputStream oneStream = sock.getOutputStream();
OutputStream theOtherStream = oneStream;
oneStream.write(\냐냐냐\.getBytes());
theOtherStream.writeObject(new String(\ㅋㅋㅋ\));
요런식으로 하면 두개를 쓸 수 있겠지요.
하지만, 하나의 스트림에다가 두개의 입구를 만드는 법은 좋지 않습니다.
\냐냐냐\를 보내는 중간에 \ㅋ -
들찬길
에러의 경우 에러 메시지를 남겨 주시는게 좋습니다.^^
원하시는 기능때문에 포트의 개념이 생긴 것 이니 맞다고 보시면 되리라 봅니다.^^
조금은 다른 컨셉이지만..
포트를 전화번호로 생각하시면...
A전화기(소켓)을 이용해서 B번호에 전화를 거셨으면...
A전화기와 B번호만 라인이 형성되었으니 이렇게만 통화가 가능하겠지요?
(문자열용 스트림이 연결된 상태..)
이 상태에서 다른 C전화기를(객체 전송용 스트림)
이미 기존에 연결된 B전화 하고는 붙일