一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - 淺談C++ Socket編程

淺談C++ Socket編程

2021-05-26 14:01chencaiming C/C++

本文給大家簡單介紹了C++中的Socket編程的種類以及sockets編程的8個(gè)步奏,簡單生動,有需要的小伙伴可以參考下

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)聽模式等待連接請求(listen());

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

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

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

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

客戶端編程的步驟:

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

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

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

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

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

1.加載方法:

?
1
2
3
4
5
6
7
8
9
10
11
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

?
1
2
3
4
5
6
7
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.客戶端:請求與服務(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.客戶端:請求與服務(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.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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();
}

原文鏈接:http://www.linuxidc.com/Linux/2017-07/145972.htm

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品私拍国产福利在线 | 青青草精品在线观看 | 99成人| 色综合网亚洲精品久久 | 国产真实偷乱视频在线观看 | 亚洲无限观看 | www.99精品| 色悠久久久久综合欧美99 | 婷婷影院在线观看 | 亚洲日本久久一区二区va | 性德国高清xxxxbbbb | 青青青青青 | 国产欧美日韩专区毛茸茸 | 亚洲国产AV一区二区三区四区 | 亚洲444777KKK在线观看 | 操一操影院| 国产精品久久久久久久久99热 | 色哟约| 99色在线观看 | 国产卡一卡二卡3卡乱码免费 | 日本九九视频 | 亚洲AV无码国产精品午夜久久 | 亚洲国产99在线精品一区69堂 | 丰满在线观看 | 日本嫩模 | 午夜在线播放免费人成无 | 国产一区二区三区毛片 | 嗯啊视频在线 | 蜜柚精彩在线观看 | 我的漂亮朋友在线观看全集免费 | 美女和男人一起差差 | 日本人成年视频在线观看 | 国产欧美一区二区三区免费看 | 色吧欧美 | 脱jk裙的美女露小内内无遮挡 | 精品女同一区二区三区免费站 | 男人的视频网站 | 亚洲国产精品免费在线观看 | 国产里番 | 免费观看一区二区 | 亚洲精品无码久久不卡 |