程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 利用WinSock進行無連接的通信

利用WinSock進行無連接的通信

編輯:關於C語言

 

WinSock提供了對UDP(用戶數據報協議)的支持,通過UDP協議我們可以向指定IP地址的主機發送數據,同時也可以從指定IP地址的主機接收數據,發送和接收方處於相同的地位沒有主次之分。利用CSocket操縱無連接的數據發送很簡單,首先生成一個本地套接口(需要指明SOCK_DGRAM標記),然後利用
int CAsyncSocket::SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )發送數據,
int CAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 )接收數據。函數調用順序如圖。

利用UDP協議發送和接收都可以是雙向的,就是說任何一個主機都可以發送和接收數據。但是UDP協議是無連接的,所以發送的數據不一定能被接收,此外接收的順序也有可能與發送順序不一致。下面是相關代碼:

/*
發送方在端口6800上向接收方端口6801發送數據
*/
//發送方代碼:
BOOL CMy62_s1_clientDlg::OnInitDialog()
{
         CDialog::OnInitDialog();
 
         //創建本地套接口
         m_sockSend.Create(6800,SOCK_DGRAM,NULL);
         //綁定本地套接口
         m_sockSend.Bind(6800,"127.0.0.1");
         //創建一個定時器定時發送
         SetTimer(1,3000,NULL);
...
}
void CMy62_s1_clientDlg::OnTimer(UINT nIDEvent) 
{
         static iIndex=0;
         char szSend[20];
         sprintf(szSend,"%010d",iIndex++);
         //發送UDP數據

							
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved