亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談C++ Socket編程

 更新時間:2017年07月29日 09:16:46   作者:chencaiming  
本文給大家簡單介紹了C++中的Socket編程的種類以及sockets編程的8個步奏,簡單生動,有需要的小伙伴可以參考下

sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數據報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket編程是采用的流式套接字。

服務器端編程的步驟:

1:加載套接字庫,創(chuàng)建套接字(WSAStartup()/socket());

2:綁定套接字到一個IP地址和一個端口上(bind());

3:將套接字設置為監(jiān)聽模式等待連接請求(listen());

4:請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字(accept());

5:用返回的套接字和客戶端進行通信(send()/recv());

6:返回,等待另一連接請求;

7:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。

客戶端編程的步驟:

1:加載套接字庫,創(chuàng)建套接字(WSAStartup()/socket());

2:向服務器發(fā)出連接請求(connect());

3:和服務器端進行通信(send()/recv());

4:關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。

第一式: 加載/釋放Winsock庫:

1.加載方法:

WSADATA wsa;

/*初始化socket資源*/

if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)

{

return; //代表失敗

}

2.釋放方法:

WSACleanup();

第二式: 構造SOCKET:

1.服務端:構造監(jiān)聽SOCKET,流式SOCKET.

SOCKET  Listen_Sock  = socket(AF_INET, SOCK_STREAM, 0)

2.客戶端:構造通訊SOCKET,流式SOCKET.

SOCKET    Client _Sock   = socket(AF_INET, SOCK_STREAM, 0)

第三式:配置監(jiān)聽地址和端口:

1.服務端: SOCKADDR_IN

serverAddr
 ZeroMemory((char *)& serverAddr ,sizeof( serverAddr )); 
serverAddr .sin_family = AF_INET ; 

serverAddr .sin_port = htons( 1234 );     /*本地監(jiān)聽端口:1234*/ 

serverAddr .sin_addr.s_addr = htonl( INADDR_ANY ); /*有IP*/ 

第四式:  綁定SOCKET:

1.服務端:綁定監(jiān)聽SOCKET.

 bind( Listen_Sock, (struct sockaddr *)& serverAddr, sizeof( serverAddr ))

第五式: 服務端/客戶端連接:

1.服務端:等待客戶端接入.

SOCKET  Command_Sock  = accept( Listen_Sock , ...)

2.客戶端:請求與服務端連接.

int ret = connect( Client_Sock , ...)

第六式: 收/發(fā)數據:

1.服務端:等待客戶端接入.char buf[1024].

接收數據:recv( Command_Sock ,buf, ...)

發(fā)送數據:send( Command_Sock ,buf, ...)

2.客戶端:請求與服務端連接.char buf[1024].

發(fā)送數據:send( Client _Sock  ,buf, ...)

接收數據:recv( Client _Sock  ,buf, ...)

第七式: 關閉SOCKET:

1.服務端:關閉SOCKET.

closesocket( Listen_Sock )

closesocket( Command_Sock )

2.客戶端:關閉SOCKET.

closesocket( Client_Sock ) 
 
#include <stdio.h>
#include <Winsock2.h>
void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
 return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
    HIBYTE( wsaData.wVersion ) != 1 ) {
 WSACleanup( );
 return;
 }
 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
 
 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);
 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 send(sockClient,"hello",strlen("hello")+1,0);
 char recvBuf[50];
 recv(sockClient,recvBuf,50,0);
 printf("%s\n",recvBuf);
 
 closesocket(sockClient);
 WSACleanup();
}

相關文章

  • Visual Studio新建類從默認internal改為public

    Visual Studio新建類從默認internal改為public

    本文將介紹如何將Visual Studio中的internal修飾符更改為public,以實現更廣泛的訪問和重用,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • C語言循環(huán)鏈表的原理與使用操作

    C語言循環(huán)鏈表的原理與使用操作

    無論是靜態(tài)鏈表還是動態(tài)鏈表,有時在解決具體問題時,需要我們對其結構進行稍微地調整。比如,可以把鏈表的兩頭連接,使其成為了一個環(huán)狀鏈表,通常稱為循環(huán)鏈表
    2022-05-05
  • 如何獲取C++類成員虛函數地址的示例代碼

    如何獲取C++類成員虛函數地址的示例代碼

    這篇文章主要給大家介紹了關于C++如何獲取類成員虛函數地址的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • 算法學習入門之使用C語言實現各大基本的排序算法

    算法學習入門之使用C語言實現各大基本的排序算法

    這篇文章主要介紹了使用C語言實現各大基本的排序算法的方法,同時也對算法的選擇問題上給出了一些建議,的朋友可以參考下
    2015-12-12
  • 帶你用C語言實現strtok和字符串分割函數

    帶你用C語言實現strtok和字符串分割函數

    下面小編就為大家?guī)硪黄猚語言中字符串分割函數及實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09
  • C語言簡明分析選擇結構和循環(huán)結構的使用

    C語言簡明分析選擇結構和循環(huán)結構的使用

    C語言條件控制語句選擇結構,是屬于計算機的語言編輯,有在C語言條件控制中的語句選擇結構的存在,即是C語言條件控制語句選擇結構,循環(huán)控制語句是一個基于C語言的編程語句,該語句主要有while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句來實現循環(huán)結構
    2022-04-04
  • C/C++中可變參數的用法詳細解析

    C/C++中可變參數的用法詳細解析

    可變參數的使用方法遠遠不止以下介紹的幾種,不過在C,C++中使用可變參數時要小心,在使用printf()等函數時傳入的參數個數一定不能比前面的格式化字符串中的’%’符號個數少,否則會產生訪問越界,運氣不好的話還會導致程序崩潰
    2013-09-09
  • C++實現LeetCode(30.串聯(lián)所有單詞的子串)

    C++實現LeetCode(30.串聯(lián)所有單詞的子串)

    這篇文章主要介紹了C++實現LeetCode(30.串聯(lián)所有單詞的子串),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言中scanf的用法舉例

    C語言中scanf的用法舉例

    本節(jié)介紹輸入函數?scanf?的用法,scanf?和?printf?一樣,非常重要,而且用得非常多,所以一定要掌握,這篇文章主要介紹了C++中scanf的用法舉例,需要的朋友可以參考下
    2022-11-11
  • C++ Dijkstra算法之求圖中任意兩頂點的最短路徑

    C++ Dijkstra算法之求圖中任意兩頂點的最短路徑

    這篇文章主要為大家詳細介紹了用C++經典算法-Dijkstra算法求任意兩頂點之間的最短路徑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論