nio 에 관련된 부분... 조금만 조언을 주세요 ^^;
여신
java 로 nio 를 이용하여 간단한 select 방식의 소켓서버를 만들었습니다.
정확히 말해서 만들었다기 보다는 java.sun.com 에 있는
소스입니다 ^^;
ByteBuffer sharedBuffer =
Selector selector =
ServerSocket serverSocket =
서버쪽 소켓 생성을 해서 accept 했는데...
socket = serverSocket.accept();
channel = socket.getChannel();
문제는.... 클라이언트에서 접속해서 어떤 문자열을 날렸습니다.
(클라이언트는 php 입니다. fsockopen() 으로 접속했죠)
접속 잘되고 아무런 문제없이 잘 작동합니다.
그런데 클라이언트에서 접속해서 날린 문자열을 되돌려서
클라이언트에게 쏴주는 것은 되는데 !!!!!!!!!!!!!!!!
그 클라이언트에서 날린 문자열을 변수에 담아서 실제로 출력을 해보려니
안됩니다... 이게 무슨 일인지....
해당 부분은 아래와 같습니다.while ((bytes = socketChannel.read(sharedBuffer)) 0)
{
System.out.println(Reading...);
sharedBuffer.flip();
while (sharedBuffer.hasRemaining())
{
System.out.println(Exec...);
System.out.println(sharedBuffer);
socketChannel.write(sharedBuffer);
}
sharedBuffer.clear();
}윗 부분 socketChannel.write(sharedBuffer);
와 같이 클라이언트에게 메세지 잘 되돌립니다.
그런데 System.out.println(sharedBuffer); 로 찍히지는 않네요.
정확히 이야기 해서 찍히지 않는것이 아니라
java.nio.DirectByteBuffer[pos=0 lim=12 cap=2048]
위 문자열이 찍힙니다. 위와 같은 이유는 대충 알겠는데...
어쨌든...
날라온 문자열을 변수에 담아서 따로 사용해야 하거든요.
이 부분에 있어서 조금만 조언을 부탁드립니다.
-
해솔
헛 -_- 무슨 말이징 @_@
-
유리
와~~ 다들 대단하시네요들 ^^ 저두 열심히 할께요 히힛!! 화팅~
-
터전
get(byte[] dst, int offset, int length) API 를 이용하여 java array 로 복사해서 사용하세요.
-
마루나
DirectByteBuffer 를 사용하신 것 같네요. 이경우 backing buffer는 java 영역이 아니라 native 영역에 있기 때문에 array() API로 값을 읽어 올 수가 없습니다..
-
퐁당
조언 감사드립니다...
자바 공부를 시작한지 얼마안되서요 ㅡㅡ;;
그래서 아래와 같이 해봤는데 해당 부분에서
에러가 나고 프로그램이 죽어버리네요.
Exception in thread \main\ java.lang.UnsupportedOperationException
at java.nio.ByteBuffer.array(ByteBuffer.java:939)
열심히 책 보고 찾아보고는 있는데...
워낙에 기본 내공이 부족해서... ㅜ.ㅜ
-
옆집언니
ByteBuffer를 사용하셨다면, 버퍼에 담긴 데이터를 byte[]로 얻어와서 String으로 변환해야 할 듯 싶네요.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2656847 | 이런-ㅁ-;자바실행 (1) | 파라미 | 2024-06-01 |
2656823 | [질문]인터넷 익스플로어 관련... (3) | 자올 | 2024-06-01 |
2656792 | 다음 로그인소스 (2) | 보미 | 2024-06-01 |
2656736 | 다시한번 질문합니다. | 뽀야 | 2024-05-31 |
2656708 | IETester 도구를 사용해 보고있는데 결과가 다르게 나옵니다. (6) | 앵겨쪼 | 2024-05-31 |
2656653 | 버튼 누르면 이메일로 내용이 전송되게 하는 소스아시나요?ㅠㅠ | 허우룩 | 2024-05-30 |
2656575 | 굵기 하는법 | 빵야 | 2024-05-30 |
2656525 | vb2008에서 6.0으로 변환중에 이런오류가 나네요...왜이런지; (1) | 비사벌 | 2024-05-29 |
2656466 | 맥북의 장점이 무엇인가요? (4) | 티나 | 2024-05-29 |
2656436 | [제작의뢰]간단한 자바 프로그램. (1) | 참이 | 2024-05-28 |
2656408 | 자바 객체 생성에 관한 질문입니다. | 해비치 | 2024-05-28 |
2656382 | 혹시 맥북환경에서 test 하시는분 계신가요? (1) | 달달한캔디 | 2024-05-28 |
2656332 | 도움이 될까해서 글을올립니다(avada 테마관련) (1) | 계획자 | 2024-05-27 |
2656271 | html5에서 div와 section의 용도차이가.. (2) | 한추렴 | 2024-05-27 |
2656239 | 자바에서 stack메모리와 heap메모리란 무엇입니까? (2) | 나봄 | 2024-05-27 |
2656131 | 문자열 출력;; (1) | 서향 | 2024-05-26 |
2656076 | DIV 안에있는 텍스트나 이미지 등을 정렬하는 방법좀... (8) | 유진공주 | 2024-05-25 |
2656051 | 대체 lt 가 무엇인가요??? | 사라 | 2024-05-25 |
2656020 | WinHTTP 사용시 Interop.WinHttp.dll 가 필요없게 하는방법이 있나요 | 나라우람 | 2024-05-25 |
2655990 | 다이나믹한 제이쿼리 플러그인을 찾습니다ㅜㅜ (1) | 권시크 | 2024-05-24 |