[問題] recvfrom(): Invalid argument (under cygwin)
問題描述:有一支在 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
推
03/02 12:53, , 1F
03/02 12:53, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章