소켓 또 질문올립니다.(될때까지 질문할수밖에... ;;; )
글쓴이: soylove / 작성시간: 목, 2005/06/30 - 12:18오전
전에도 질문을 올렸긴했지만 파일이 깨지는 바람에....
다시 질문을 올립니다.
첨부파일 soc1.c가 서버 역할
mid.c가 중간 매개역할
soc4.c가 클라이언트 역할을 합니다.
통신테스트만을 목적으로하여 소스는 보시면 간략하게 아실수 있을 것입니다.
처음에 soc1.c와 soc4.c를 곧바로 연결하여 데이터를 전송할때는 문제가 없이 잘 돌아가는것을 확인하고 중간매개 mid.c를 만들었는데 잘 전송이 되지 않습니다. soc4가 주기적으로 메세지를 보내면 mid.c에서도 받은 데이터를 찍어주고, soc1에 메세지를 send하도록 만들었습니다.
그런데 수행해보면 mid에서 처음 딱 한번만 soc4에서 메세지를 받고 데이터를 출력한후에는 아무 반응이 없습니다....
어디가 잘못됐는지도 잘 모르겠고...
전에 질문했을때 어느분이 SO_REUSEADDR을 써보라고 해서 사용해봤지만 달라짐을 느낄수가 없었습니다.
많은 조언 부탁드립니다.
File attachments:
첨부 | 파일 크기 |
---|---|
소스.zip | 2.28 KB |
Forums:
mid.c에서fork()수행후 자식이 죽지 않고 다시 부모와 함께
mid.c에서
fork()수행후 자식이 죽지 않고 다시 부모와 함께
for() 루프를 도는군요.
그리고 recv를 부모,자식이 경쟁적으로 하게 되있습니다.
그보다는
for() {
listen();
fork();
if (자식) {
recv();
print();
connect();
send();
exit(0);
else (부모) {
continue;
}
}
이런 방식 이 어떨까 합니다.
그리고 소스마다 보면
if (socket())
print(error);
if (bind())
printf(error);
이런 구조로 되있는데 그러면 처음 socket()에서 에러가 나도
bind()함수를 호출하게 되있습니다.
그리고 8byte를 보낸다고 받는 쪽에서도 버퍼를 8byte만
할당하는건 좋지않다고 생각합니다.
여유있게 4096정도 해주세요.
그리고 버퍼는 항상 쓰기 전에 초기화 해주시고요..
스페이스바가 먹지 않는군요.
게시판 쓰는 법을 잘 몰라서....
댓글 달기