리눅스 소켓 프로그램 질문입니다.
안녕하세요.
소켓 프로그램에 대해서 이해가 안대는것이 있어 질문 드립니다.
소스 일부 발퀘입니다. (서버쪽)
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 */
이렇게 되어 있더라구여.. 혹시 이에 관련해서 아시는것이 있으신분이 있으신가요?
select 리턴이 0 이면 select 문제가 아닙니다.
select 는 리턴값이 -1 일때 에러입니다.
0은 타임아웃으로 정상처리된거고요, 저 errno 는 log함수에서 나온거같네요.
댓글 달기