지금 서버와 클라이언트 채팅을 만들고 있는데요
이게 처음에 클라이언트에서 메시지를 보내면 서버에서 데이터를 받고 보내주는 형식으로 만들고 싶었는데요
둘다 처음에는 잘 주고 받는데 두번째부터는 서버는 에코(말 되돌려주는)기능만 해주고 아무것도 안 나오네요
그 결과 클라이언트에서 메시지를 보내면 그대로 바로 돌아오고요
밑에꺼가 서버부분 연결요청&메시지 송수신 받는 부분인데요
뭐가 문제인지 한번만 봐주시면 감사하겠습니다 ㅜㅜ
while(1)
{
ClntAddrSize=sizeof(ClntAddr);
hClntSock = accept(hServSock, (SOCKADDR*)&ClntAddr, &ClntAddrSize); /* 클라이언트 연결요청 수락 */
if(hClntSock==INVALID_SOCKET)
{
ErrorHandling(\"hClntSock1 accept() error\");
break;
}
strLen=recv(hClntSock, message, BUFSIZE-1, 0); /* 수신 */
message[strLen]=0;
printf(\"클라이언트로부터 전송된 메시지 : %s \\n\", message);
fputs(\"전송할 메시지를 입력하세요 (q to quit) : \", stdout);
fgets(message, BUFSIZE, stdin); /* 전송할 데이터 입력 */
if(!strcmp(message, \"q\\n\"))
break;
send(hClntSock, message, strlen(message), 0); /* 송신 */
closesocket(hClntSock);
}
리눅스에는 프로세스를 하나 복사해서 입력이랑 출력을 따로 나눌 수 있는데
윈도우도 파이프를 생성할 수 있나요?
이게 처음에 클라이언트에서 메시지를 보내면 서버에서 데이터를 받고 보내주는 형식으로 만들고 싶었는데요
둘다 처음에는 잘 주고 받는데 두번째부터는 서버는 에코(말 되돌려주는)기능만 해주고 아무것도 안 나오네요
그 결과 클라이언트에서 메시지를 보내면 그대로 바로 돌아오고요
밑에꺼가 서버부분 연결요청&메시지 송수신 받는 부분인데요
뭐가 문제인지 한번만 봐주시면 감사하겠습니다 ㅜㅜ
while(1)
{
ClntAddrSize=sizeof(ClntAddr);
hClntSock = accept(hServSock, (SOCKADDR*)&ClntAddr, &ClntAddrSize); /* 클라이언트 연결요청 수락 */
if(hClntSock==INVALID_SOCKET)
{
ErrorHandling(\"hClntSock1 accept() error\");
break;
}
strLen=recv(hClntSock, message, BUFSIZE-1, 0); /* 수신 */
message[strLen]=0;
printf(\"클라이언트로부터 전송된 메시지 : %s \\n\", message);
fputs(\"전송할 메시지를 입력하세요 (q to quit) : \", stdout);
fgets(message, BUFSIZE, stdin); /* 전송할 데이터 입력 */
if(!strcmp(message, \"q\\n\"))
break;
send(hClntSock, message, strlen(message), 0); /* 송신 */
closesocket(hClntSock);
}
리눅스에는 프로세스를 하나 복사해서 입력이랑 출력을 따로 나눌 수 있는데
윈도우도 파이프를 생성할 수 있나요?
버퍼에 뭐가 쌓여있나본데요? 비우고 하면 될거 같은데.
머리 조잡해 프로토콜로 갈라버려