【文章內(nèi)容簡介】
S A C l e a n u p ( )W S A S t a r t u p ( )s o c k e t ( )c o n n e c t ( )s e n d ( )r e c v ( )c l o s e s o c k e t ( )W S A C l e a n u p ( )三 次 握 手 過 程 建 立 T C P 連 接交 換 數(shù) 據(jù)交 換 數(shù) 據(jù)關(guān) 閉 T C P 連 接等 待 客 戶 連 接 請 求 的 到 來服 務(wù) 器 端 客 戶 端客戶端的建立 相比于服務(wù)器,客戶端就簡單多了,因為它只需要一個 SOCKET。 添加一個基于 CSocket的子類 Client,點擊完成。這個類我們用于和客戶端的連接和收發(fā)數(shù)據(jù)。 然后,在主對話框的頭文件中添加 include ,并且聲明一個 Cilent類 m_mySocket。 接著,我們得再主對話框的 OnInitDialog函數(shù)中添加()。 //初始化 SOCKET 這時候,我們可以為主對話框添加一個按鈕, caption設(shè)為“連接 ”,用于連接。雙擊這個按鈕,開始函數(shù)定義,在函數(shù)體中我們加入以下代碼: (_T(),8888)。 第一個參數(shù)表示想要連接的服務(wù)器的 IP,第二個參數(shù)表示端口。 現(xiàn)在,客戶端與服務(wù)器的連接工作已經(jīng)做好了,我們需要再在客戶端的主對話框中添加一個按鈕, caption設(shè)為 “發(fā)送 ”,用于發(fā)送信息,在改按鈕的函數(shù)中,我們添加以下代碼: (客戶端發(fā)來了信息 ,100)。//參數(shù)分別表示要發(fā)送的字符串和字符串的最大長度 . 服務(wù)端的建立: 添加一個基于 CSocket的子類 Socket,點擊完成。這個類我們用于監(jiān)聽。 接下來呢,我們在 Socket類函數(shù)實現(xiàn)中點屬性 重寫 OnAccept。點屬性 重寫 OnReceive。在 OnReceive函數(shù)中,我們添加以下代碼: char str[100]。 Receive(str,100)。 CString strtest。 strtest=str。 AfxMessageBox(strtest)。 在 OnAccept函數(shù)中,我們添加以下代碼: Socket SocketRev= new Socket ()。 Accept(SocketRev)。 這段代碼的作用是在 當(dāng)服務(wù)器監(jiān)聽到客戶端的連接請求時,新建一個 CRecv的成員,并用它來接受客戶端的連接請求,也就是 用它與客戶端綁定 。 這段代碼用于接收客戶端發(fā)送過來的字符串,然后以MessageBox的形式顯示出來。 最后,在主對話框的頭文件中添加 include ,并且聲明一個 CListen變 量 m_listen 。然后,在主對話框的 OnInitDialog函數(shù)中,添加如下代碼: (8888)。 //8888表示的是我們要監(jiān)聽的端口 ()。 (三) Socket相關(guān)代碼 Socket基本函數(shù)的介紹 創(chuàng)建套接字 Socket 應(yīng)用程序在使用套接口通信前,必須要擁有一個套接口,使用 socket()函數(shù)來給應(yīng)用程序創(chuàng)建一個套接口。 SOCKET socket( int af, //要使用的協(xié)議地址族 int type, //描述套接口的類型 int protocol //該套接口使用的特定協(xié)議 )。 af參數(shù) : 說明套接字接口要使用的協(xié)議地址族,地址族與協(xié)議族含義相同。如果想建立一個 TCP或 UDP,