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

利用WinSock進行有連接的通信

編輯:關於C語言

 

 

 

 

WinSock提供了對TCP(傳輸控制協議)的支持,通過TCP協議我們可以與指定IP地址的主機建立,同時利用建立的連接可以雙向的交換數據。利用CSocket操縱有連接數據交換很簡單,但是在有連接的通信中必需有一方扮演服務器的角色等待另一方(客戶方)的連接請求,所以服務器方需要建立一個監聽套接口,然後在此套接口上等待連接。當連接建立後會產生一個新的套接口用於通信。而客戶方在創建套接口後只需要簡單的調用連接函數就可以創建連接。對於有連接的通信不論是數據的發送還是發送與接收的順序都是有保證的。雙方的函數調用順序如圖。

下面的代碼演示了如何建立連接和發送/接收數據:

/*
服務器方在端口6802上等待連接,當連接建立後關閉監聽套接口
客戶方向服務器端口6802發起連接請求
*/
BOOL CMy63_s1_serverDlg::OnInitDialog()
{
         CDialog::OnInitDialog();
 
         CSocket sockListen;
         //創建本地套接口
         sockListen.Create(6802,SOCK_STREAM,"127.0.0.1");
         //綁定參數
         sockListen.Bind(6802,"127.0.0.1");
         sockListen.Listen(5);
         //等待連接請求,m_sockSend為成員變量,用於通信
         sockListen.Accept(m_sockSend);
         //關閉監聽套接口
         sockListen.Close();
         //啟動定時器,定時發送數據
         SetTimer(1,3000,NULL);

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