作者bobhsiao (㊣小臃腫㊣)
看板C_and_CPP
標題[問題] recvfrom(): Invalid argument (under cygwin)
時間Mon Mar 2 12:40:44 2009
問題描述:有一支在 Redhat 9.0 下可以正常執行的小程式, 要移植到 win32 下.
我用 cygwin 一編就過. 但跑到 recvfrom() 就會出錯, 網路上查的
結果是說 recvfrom() 的最後一個參數要設初值
但我程式本來就有設. 我想問的是:
1.這是 cygwin 的問題還是我程式的問題?
2.有在 cygwin 下解決的方法嗎?
錯誤訊息:
recvfrom() failed: Invalid argument
原始碼如下:
#define RCVBUFSIZE 1500 /* Size of receive buffer */
static void * waitACKTask(void)
{
unsigned char rcvBuf[RCVBUFSIZE];
struct sockaddr_in fromAddr; /* Source address of echo */
unsigned int fromSize;
int recvMsgSize;
for(;;) {
/* get ack from server */
memset(rcvBuf, 0, sizeof(rcvBuf));
fromSize = sizeof(fromAddr);
//有設初值!
if ((recvMsgSize = recvfrom(sock, rcvBuf, RCVBUFSIZE, MSG_OOB,
(struct sockaddr *) &fromAddr, &fromSize)) < 0) {
fprintf(stderr, "recvfrom() failed: %s\n", strerror(errno));
printf("Client address: %s\n", inet_ntoa(fromAddr.sin_addr));
} else {
/* do something here */
}
}
}
謝謝看完&&回答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.210.88.185
1F:推 joefaq:cygwin的問題 win32還是用winsock吧 03/02 12:53