這兩天一直在找mfc下用csocket實現udp通訊,嘗試了網上不少的資料都沒有成功,可能是自己在什麼地方出錯了。最後參考順利實現了。自己也順便作一些總結,希望可以利人利己。
基本介面如下:
udp通訊時雙方地位是對等的,不用像tcp那樣要在伺服器端設定乙個監聽socket。
第一步:呼叫create函式在本機上建立乙個socket。
例項中用到:m_psocket->create(m_localportnum, sock_dgram);
其中m_localportnum代表建立的socket關聯到本機上的埠號,
sock_dgram代表是udp通訊。
第二步:呼叫bind函式讓新建立的socket與遠端主機的指定埠通訊。
例項中用到:m_psocket->bind(m_peerportnum, m_strpeeripaddr);
其中m_peerportnum是遠端主機中udp通訊的埠號,m_strpeeripaddr代表遠端主機的ip位址。
udp通訊的雙方通過第一步和第二步,就知道資訊該傳送到哪個ip位址和埠號了,接下來該實際傳送資料了。
第三步:準備好資料呼叫sendto函式,將資料傳送到遠端主機上。
例項中用到:m_psocket->sendto(m_datatosend, m_datatosend.getlength(),m_peerportnum, m_strpeeripaddr);
其中第乙個引數指定了要傳送的資料,第二個引數指定了傳送資料的長度,第三個引數指定了遠端主機的埠號,
第四個引數指定了遠端主機ip位址。
第四步:
資料接收方會自動啟用onreceive函式來響應,只需在onreceive函式中呼叫receivefrom函式來讀取資料即可
。例項中改寫了cudpsocket類的onreceive,目的就是呼叫afxmessgebox顯示接受到資料。
void cudpsocket::onreceive(int nerrorcode)
else if (socket_error == recbytes)
else
csocket::onreceive(nerrorcode);
}
MFC下CSocket程式設計詳解
mfc下csocket程式設計詳解 1.常用的函式和注意事項 詳細的函式介面說明請檢視msdn csocket create 初始化 一般寫伺服器程式都不要用為好,用下面的 csocket socket 初始化 csocket socket初始化 csocket setsockopt 設定socke...
CSocket類網路程式設計 MFC
visual c 的mfc提供了csocket類用來實現網路通訊。下面介紹vc 在windows 95中實現socket的 csocket 類相關成員函式 這些成員函式實際上是從casyncsocket 類繼承來的 的使用。1 bool create uint nsocketport 0,int n...
MFC下CSocket程式設計詳解 轉)
mfc下csocket程式設計詳解 1.常用的函式和注意事項 詳細的函式介面說明請檢視msdn csocket create 初始化 一般寫伺服器程式都不要用為好,用下面的 csocket socket 初始化 csocket socket初始化 csocket setsockopt 設定socke...