리눅스 소켓 프로그램 질문입니다.

poiq1의 이미지

안녕하세요.

소켓 프로그램에 대해서 이해가 안대는것이 있어 질문 드립니다.

소스 일부 발퀘입니다. (서버쪽)
stats=select(socket+1, NULL, &fdSendSet, NULL, &stTimeVal);
if(stats== 0)
{
LogMessage("송신 대기 오류");
return false;
}
else
{
if(FD_ISSET(socket, &fdSendSet))
{
result=send(socket, data, nLen, 0);
// result=write(socket, data, nLen);
if(result <0)
{
if (errno != EWOULDBLOCK)
{
LogMessage("송신 데이터 없음");
return false;
}
}

}
}

문제는 데이터를 송신하는데 수신측 클라이언트가 팍 하고 종료 해버립니다.

그리고 select함수에서 0을 리턴해서 타임아웃으로 빠져나오는데요

errno로 검색해보니 84번 나옵니다.

EILSEQ 84 /* Illegal byte sequence */

이렇게 되어 있더라구여.. 혹시 이에 관련해서 아시는것이 있으신분이 있으신가요?

harion01의 이미지

select 는 리턴값이 -1 일때 에러입니다.

0은 타임아웃으로 정상처리된거고요, 저 errno 는 log함수에서 나온거같네요.