我想做一個C++程序工作,這是由別人寫的。我很難理解它。我甚至不能%100確信,我們可以使用poll()與UDP套接字但我重構,採用輪詢()的代碼從UDP套接字如下:民意調查()與非阻塞udp套接字
fd.fd = m_bsocket;
fd.events = POLLIN;
iPollResult = poll(&fd, 1, iTimeout);
if(iPollResult > 0)
{
int iReceivedByteCount = recv(m_bsocket, p_pBuffer, p_iBufferSize, 0);
if(iReceivedByteCount > 0)
{
*p_pReadSize = iReceivedByteCount;
}
else
{
eReturnValue = UDP_READ_ERROR;
}
}
return eReturnValue;
我試圖發送UDP數據包使用命令行到此程序:
echo「123」| nc -u 127.0.0.1 25
它看起來像poll()總是超時並返回0,因此我什麼都看不懂。
我也寫了一個小的c#程序,發送udp數據報,但我無法收到消息。我想知道我在做什麼錯...
什麼是超時設置? –
對不起,1000毫秒。我也試過使它達到10000毫秒,但沒有幫助。也許我以錯誤的方式創建套接字。 –
如果這是unix,請查看netstat和tcpdump是否可以提供更多信息。類似的工具存在於Windows中。 – stefaanv