소켓서버에서 두개의 포트로 들어오는걸 받을려면은..
글쓴이: rokmn3309 / 작성시간: 토, 2004/04/17 - 9:09오전
안녕하세요..
현재 xml 소켓 <-----> java thead 데몬이랑 소켓통신중에
java thead랑 내부에서 소켓으로 다시 통신을 해야합니다.
while(true){ readstr = in.readLine(); // 특정포트로 데이터를 받음 TCP ......... ..... innersocket.receive(packetIn); // 다른 특정포트로 데이터를 받음 UDP }
이렇게 구현이 될려면은 첫번째 받는 부분에서 일정 시간이 지나면 밑으로 빠지게 해야 할것 같은데.. 이런게 가능한건지...
이런 방법이 아니라면 한서버가 두 포트로 데이터를 받아서 처리할려면은
어떤 방법이 있는지 알려주시면 감사하겠습니다.
그럼 수고하세요..
Forums:
이건 select()아 아주 딱일것 같네요.select()를 한 번
이건 select()아 아주 딱일것 같네요.
select()를 한 번 찾아 보시길...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
윽... 그렇군요..
gcc로 한다며은 select가 맞을거라 생각을 햇는데..
그렇게 되면은 기존에 자바서버로 서비스하는걸 다 바꾸어야 한다는...
자바에서 해결할만한게 없을까요?
java에서의 구현을 원하신다면...이 java code에 c cod
java에서의 구현을 원하신다면...
이 java code에 c code를 덧붙이는 방법이 가장 낮지 않을까 생각이 드네요.
현재로선...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
쓰레드가 낫겠네요.
readstr = in.readLine(); 만 하는 쓰레드와 innersocket.receive(packetIn); 만 하는 쓰레드를 각각 만들어서, 패킷이 도착하면 실제 작업하는 쓰레드에게 알려주는 형식으로 하면 되겠군요. 함수호출로 하든 자고 있던 녀석을 깨우든..
두 소켓 동시에 처리하려는 사소한 일 때문에 C를 붙이는 건 오버죠..^^
^__^
자바도 많이 좋아졌죠...
nio 패키지를 참조하세요... (1.4이상)
IO 멀티플렉싱을 지원합니다. (select())
참고
[참고자료소개]
자바 + 디자인패턴 을 고려할때, "reactor pattern"을
검토해 보세요. 구글검색에도 많은 사례가 나올겁니다.
nio를 이용한 reactor pattern 구현이,
질문하신 분에게 대체로 적합한 사항이 아닌가 합니다.
* reactor? nonblocking + select 구현이라고 보셔도 되겠습니다.
* C,C++로 이를 구현하려면 버퍼관리가 아주 귀찮은 일인데, :(
자바는 이를 위한 클래스를 제공하더군요. :?
* 참고로, 제가 과거 한때 자바프로그램을 작성했을때, 참고했던 슬라이드를 소개합니다.
읽어보시면 보탬이 되실듯합니다.
http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
그외 Douglea의 홈페이지(http://gee.cs.oswego.edu/를
살펴보시면, 좋은(?) 내용이 많습니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기