소스좀 봐주세요 소켓의 이중 접속문제입니다.

익명 사용자의 이미지

아래의 프로그램 같이 하나의 소켓으로 접속대기후
클라이언트가 접속이 되면 송수만하게 되어있는데
이상한건 클라이언트에서 새로운 접속을 하면
연결이 된다는 점입니다.
새로 listen 한것도 아니고 new-fd 획득후
이전 소켓을 close 해도 그러니 이해가 안가네요
도움 바랍니다.

server.c

main()
{
fd = socket ();
bind ();
listen ();

while (1)
{
if (senect ())
{
new_fd = accept ();
close (fd); // 이전 소켓 close
break;
}
}
while (1)
{
read () // 이부분이 실행되고 있을때
write(); // 재접속 해도 받아줌 ?
}
}

익명 사용자의 이미지


소스가 다 있는게 아니라서 단언은 못하겠지만..
일단 accept()에 걸려야 커넥이 됩니다..

만약 서버에서 accept()가 한번만 실행된다면.. 클라이언트가 커넥에 정
말 성공했는지 한번 확인해 보세요.. 클라이언트쪽에서 실수 했을지도..
^^