send/recv 와 write/read함수의 차이가 무엇인지요?
그리고 데이터를 줄단위(\r\n)로 받을려면 어떻게해야하나요? 직접 구현을 해야하는지요?
1번 질문에 대해...
UNIX/Linux에서 모든 장치/자원은 FILE입니다.
그래서 소켓이란 자원 역시 read/write라는 인터패이스로
입출력을 할 수 있습니다.
recv/send는 소켓 전용 인터패이스로 뒤에 옵션이 하나 더 붙습니다.
UNIX/Linux에선 아무거나 써도 무방하나,
Windows에선 ㅡ_-) 소켓은 recv/send만 써야합니다. (장치/자원 개념이 약간 달라서...)
ㅡ_-); UNIX/Linux에서 read/write로 소켓을 쓸 수 있지만,
그래도 recv/send로 통일해서 쓰시는 것이 차후 정신건강에 좋으실 듯 합니다.
_____________________________ 언제나 맑고픈 샘이가...http://purewell.biz
2번 질문에 대해...
Socket의 버퍼에 얼마만큼의 데이터가 있는지 ioctl 로 알 수 있습니다. (Windows는 ioctlsocket)
#ifdef WIN32 #define SOCK_IOCTL ioctlsocket #else #define SOCK_IOCTL ioctl #endif ... unsigned long nRead; SOCK_IOCTL(sockfd, FDIONREAD, &nRead);
위의 코드에서 SOCK_IOCTL이 실패하지 않는다면,
nRead에 읽을 수 있는 데이터량이 들어갑니다.
ㅡ_-) 그 양을 recv로 받아 버퍼에 채워넣으면서,
그 버퍼에 \r\n이 있는지 확인하는 방법을 많이 쓰는 것 같던데...
ㅡ_-);;; 아무튼 직접 만들어야 합니다.
(허접한 답변이군... :oops: )
일단 유닉스 쪽에서는 write, read 를 써도 상관없습니다.
하지만, 호환을 위해서, send, recv를 사용하시는게 좋습니다. 그럼 고운 하루.
========================= CharSyam ^^ --- 고운 하루 =========================
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
1번 질문에 대해...UNIX/Linux에서 모든 장치/자원은 F
1번 질문에 대해...
UNIX/Linux에서 모든 장치/자원은 FILE입니다.
그래서 소켓이란 자원 역시 read/write라는 인터패이스로
입출력을 할 수 있습니다.
recv/send는 소켓 전용 인터패이스로 뒤에 옵션이 하나 더 붙습니다.
UNIX/Linux에선 아무거나 써도 무방하나,
Windows에선 ㅡ_-) 소켓은 recv/send만 써야합니다.
(장치/자원 개념이 약간 달라서...)
ㅡ_-); UNIX/Linux에서 read/write로 소켓을 쓸 수 있지만,
그래도 recv/send로 통일해서 쓰시는 것이 차후 정신건강에 좋으실 듯 합니다.
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
2번 질문에 대해...Socket의 버퍼에 얼마만큼의 데이터가 있
2번 질문에 대해...
Socket의 버퍼에 얼마만큼의 데이터가 있는지 ioctl 로 알 수 있습니다.
(Windows는 ioctlsocket)
위의 코드에서 SOCK_IOCTL이 실패하지 않는다면,
nRead에 읽을 수 있는 데이터량이 들어갑니다.
ㅡ_-) 그 양을 recv로 받아 버퍼에 채워넣으면서,
그 버퍼에 \r\n이 있는지 확인하는 방법을 많이 쓰는 것 같던데...
ㅡ_-);;; 아무튼 직접 만들어야 합니다.
(허접한 답변이군... :oops: )
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
일단 유닉스 쪽에서는 write, read 를 써도 상관없습니다.
일단 유닉스 쪽에서는 write, read 를 써도 상관없습니다.
하지만, 호환을 위해서, send, recv를 사용하시는게 좋습니다. 그럼 고운 하루.
=========================
CharSyam ^^ --- 고운 하루
=========================
댓글 달기