[問題] recvfrom(): Invalid argument (under cygwin)

看板C_and_CPP (C/C++)作者 (㊣小臃腫㊣)時間16年前 (2009/03/02 12:40), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
問題描述:有一支在 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
cygwin的問題 win32還是用winsock吧
03/02 12:53, 1F
文章代碼(AID): #19gsDDju (C_and_CPP)
文章代碼(AID): #19gsDDju (C_and_CPP)