欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談C++ Socket編程

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

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

服務(wù)器端編程的步驟:

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

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

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

4:請(qǐng)求到來后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字(accept());

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

6:返回,等待另一連接請(qǐng)求;

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

客戶端編程的步驟:

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

2:向服務(wù)器發(fā)出連接請(qǐng)求(connect());

3:和服務(wù)器端進(jìn)行通信(send()/recv());

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

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

1.加載方法:

WSADATA wsa;

/*初始化socket資源*/

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

{

return; //代表失敗

}

2.釋放方法:

WSACleanup();

第二式: 構(gòu)造SOCKET:

1.服務(wù)端:構(gòu)造監(jiān)聽SOCKET,流式SOCKET.

SOCKET  Listen_Sock  = socket(AF_INET, SOCK_STREAM, 0)

2.客戶端:構(gòu)造通訊SOCKET,流式SOCKET.

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

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

1.服務(wù)端: 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.服務(wù)端:綁定監(jiān)聽SOCKET.

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

第五式: 服務(wù)端/客戶端連接:

1.服務(wù)端:等待客戶端接入.

SOCKET  Command_Sock  = accept( Listen_Sock , ...)

2.客戶端:請(qǐng)求與服務(wù)端連接.

int ret = connect( Client_Sock , ...)

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

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

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

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

2.客戶端:請(qǐng)求與服務(wù)端連接.char buf[1024].

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

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

第七式: 關(guān)閉SOCKET:

1.服務(wù)端:關(guān)閉SOCKET.

closesocket( Listen_Sock )

closesocket( Command_Sock )

2.客戶端:關(guān)閉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();
}

相關(guān)文章

  • Visual Studio新建類從默認(rèn)internal改為public

    Visual Studio新建類從默認(rèn)internal改為public

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

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

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

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

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

    算法學(xué)習(xí)入門之使用C語言實(shí)現(xiàn)各大基本的排序算法

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

    帶你用C語言實(shí)現(xiàn)strtok和字符串分割函數(shù)

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

    C語言簡(jiǎn)明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用

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

    C/C++中可變參數(shù)的用法詳細(xì)解析

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

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

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

    C語言中scanf的用法舉例

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

    C++ Dijkstra算法之求圖中任意兩頂點(diǎn)的最短路徑

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

最新評(píng)論