네트워크 프로그래밍..
글쓴이: ctcquatre / 작성시간: 수, 2005/04/27 - 6:21오후
TCP/IP네트웍 프로그래밍을 공부하고 있습니다.
짧은 지식으로나마 뭐 하나 만들어보고 싶어서.
주기적으로 Linux 프로그램과 Windows프로그램간의
데이타를 주고 받는 형태를 생각하고 있습니다.
뭐 채팅과 비슷한거죠.
Linux는 콘솔환경에 Server가 되는거고
Windows는 Client로
문제는 Linux의 Send와 Recv쪽입니다.
windows프로그램은 Winapi에서 넌블록킹을 지정하고 이벤트로 처리하면
send와 recv 필요에 호출할수있으니까 그리 문제될건
없다고 생각하는데..
linux쪽은 제가 네트웍 플밍의 지식이 짧은 지라..
통신 방법이 떠오르지 않습니다.
해본거라곤 EchoServer와 EchoClient를 제작해본게 고작입니다.
그래서인지
필요에 의해 Send와 Recv를 호출할 방법이 머리속에
쉽게 떠오르지 않네요.
Echo라고 해봤자 Server는
Recv(.....); Send(....);
이렇게 받을걸 되돌리면 되니까요.
하지만 채팅은 저런식으로가 아니고
데이타가 오면 Recv처리를 해야 하고
그 순간이라도 보낼데이타가 있으면 send처리를 해야하는데
이것을 어떻게 처리하죠?
혹시나해서 signal부분도 짧막한 문서를 훑어봤는데.
흠.. 명확히 풀리지가 않네요 :shock:
조언을 부탁드립니다.
더불어 오늘 날씨가 참 좋네요.. 좋은 하루되세요.
Forums:
쓰레드가 필요한 시점입니다..
쓰레드가 필요한 시점입니다..
스레드는 쓰고 있습니다.main(){ listen(
스레드는 쓰고 있습니다.
main()
{
listen(....)
pthread_create(....,Myaccept(),...);
}
return Myaccept()
{
accept(...)
recv(...);
send(...);
}
이런 형식으로 스고 있습니다.
물론 accept()부분은 그냥 넣어본것이고 적절한곳에 넌블럭으로 넣어야게죠.
제가 스레드부분도 몇페이지에 해당하는 문서만 읽어본지라
내공이 부족해서 그런데
어떻게 recv()와 send()를 스레드를 써서 호출될 필요성에 의해
작업을 하게 할수있을까요?
제가 무리한 설명을 바라는것이라면
대충 짧막하게 개념정도로만 설명해주셔도 좋습니다.
"어떤 걸 참고하고, 어떤어떤 형식으로 돌아가게 만들면 될것이다."
이런식으로요.. 당장 이해가 안된다 하더라도 다시 공부해서 이해하겠습니다.
Chaos to Cosmos,
Chaos to Chaos,
Cosmos to Cosmos,
Cosmos to Chaos.
select 나 epoll 등으로 read 할 데이터가 있는지 확인하면
select 나 epoll 등으로 read 할 데이터가 있는지 확인하면 되지 않을까요???
역시나 넌블락킹 하시면 됩니다. 방법은 윗분 답변에..
역시나 넌블락킹 하시면 됩니다. 방법은 윗분 답변에..
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
답변 감사드립니다.. 다행히 힌트를 얻어 더 많은 것을 공부하게 되었
답변 감사드립니다.. 다행히 힌트를 얻어
더 많은 것을 공부하게 되었습니다.
부과적으로 의문이생겨서 이렇게 또 물어봅니다.
select에 관해 좀 살펴봤습니다.
문제는 해결될것 같은데 효율성에서 좀 걸리더군요.
반면에 epoll은 비효율성은 커버할수있으나
커널 2.4에서는 패치를 통해 제공하고
2.6버젼때부터 정식지원 되더군요. 그래서 쓰기가 좀 그렇고
일단 select를 써서 구현을 한번 생각해봤습니다.
이렇게 했을때 그 쓰레드에서 1개의 식별자에 대한 감시만 하면되는데 select 특성상 현제 열려있는 모든 식별자를 감시하므로
많은 연결이 있을경우 효율성이 급격히 떨어질것 같더군요.
만약 accept가 100번발생되면
스레드는 100개가 생기고 각 스레드마다 select는 100개의 식별자를
감시하게 되므로 10000번의 숫자가 나오게 되는것 같습니다.
흠.. 제가 생각하는게 맞는지요?
select를 스레드부분에 두지 말고 상위에 두어
스레드부분에는 해당 식별자값만 넘겨주어야 하는걸까요?
보통 server 데몬이 이런식으로 패킷을 처리하지 않을것 같다라는
생각도 들고.. 잡생각이 굉장이 많아 지는군요.
Chaos to Cosmos,
Chaos to Chaos,
Cosmos to Cosmos,
Cosmos to Chaos.
[code:1]main(){ th_
틀리더라도 고수분들이 고쳐주시길
다른 모델하려면
이모델은 하다보면 손대야 될거 많음 :)
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
alsong님 자세한 답변 감사드립니다.오늘 아침부터 다시 쭉 자료를
alsong님 자세한 답변 감사드립니다.
오늘 아침부터 다시 쭉 자료를 찾아다니다가 RTS라는걸 알게되었습니다.
select의 비효율을 커버할수있다더라구요.
그래서 rts쪽으로 하기로 했습니다.
성의껏 답변 달아주셨는데.. 좀 머쓱합니다. :oops:
ㅎㅎ 그런데 rts문서 이것저것 공부하고 짠 프로그램에도
역시나 문제가 발생하더군요.
이거 꾀나 골치아파 질것 같습니다.
스레드에서 실행시킨 sigwaitinfo()문이 프로그램전체를 블럭시켜버리는... --;
여하튼 모두들 감사드리고, 좋은 일 생기세요.
Chaos to Cosmos,
Chaos to Chaos,
Cosmos to Cosmos,
Cosmos to Chaos.
댓글 달기