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

詳談C++ socket網(wǎng)絡(luò)編程實(shí)例

 更新時(shí)間:2021年11月19日 10:11:45   作者:ufgnix0802  
這篇文章主要為大家介紹了C++ socket網(wǎng)絡(luò)編程實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

功能

實(shí)現(xiàn)基于sokcet的Cpp服務(wù)端

TIPS:功能包括接收客戶端的數(shù)據(jù),向客戶端發(fā)送數(shù)據(jù)。

源碼

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
//#include <windows.h>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32")
using std::cout;
using std::endl;
using std::cin;

int main()
{
	system("chcp 65001");
	//SetConsoleOutputCP(65001);
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2, 2), &wsaData);//啟動(dòng)window動(dòng)態(tài)網(wǎng)絡(luò)庫(kù)
	//1.創(chuàng)建socket
	//SOCKET == 句柄 == 文件描述符 == 套接字
	//socket(協(xié)議族類型,協(xié)議類型,0);
	//協(xié)議族類型 IPV4(AF_INET) IPV6
	//協(xié)議類型 TCP(SOCK_STREAM),UDP(SOCK_DROP)
	SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);//IPPROTO_TCP
	if (serverSocket == INVALID_SOCKET)
	{
		cout << "創(chuàng)建socket失敗" << endl;
		return 0;
	}
	//2.綁定ip和端口號(hào)
	//127.0.0.1 永遠(yuǎn)指向本機(jī)
	//0.0.0.o 綁定所有網(wǎng)卡的ip
	SOCKADDR_IN serverAddr;
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(7890);//host to networks short,將主機(jī)字節(jié)序轉(zhuǎn)化為網(wǎng)絡(luò)字節(jié)序
	serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//點(diǎn)分十進(jìn)制轉(zhuǎn)換為10進(jìn)制
	if (SOCKET_ERROR == bind(serverSocket, (sockaddr *)&serverAddr, sizeof(SOCKADDR_IN)))
	{
		cout << "bind 失敗" << endl;
		return 0;
	}
	cout << "bind 成功" << endl;
	//3.監(jiān)聽,提示本機(jī)的操作系統(tǒng)
	if (INVALID_SOCKET == listen(serverSocket, 5))
	{
		cout << "listen 失敗" << endl;
		return 0;
	}
	cout << "listen 成功" << endl;
	while(true)
	{
		//4.等待客戶端連接
		SOCKADDR_IN clientAddr;
		int addrLen = sizeof(SOCKADDR_IN);
		SOCKET clientSocket = accept(serverSocket, (SOCKADDR *)&clientAddr, &addrLen);
		if (INVALID_SOCKET == clientSocket)
		{
			cout << "客戶端連接失敗 " << endl;
			return 0;
		}
		cout << "client ok " << inet_ntoa(clientAddr.sin_addr) << endl;
		cout << "port " << ntohs(clientAddr.sin_port) << endl;
		//5.收發(fā)數(shù)據(jù)
		//接收數(shù)據(jù)
		char recvBuffer[1024]{ 0 };
		int nRecv = recv(clientSocket, recvBuffer, 1024, 0);
		cout << "recvLen:" << nRecv << "內(nèi)容:" << recvBuffer << endl;
		//發(fā)送數(shù)據(jù)
		int nSend = send(clientSocket, recvBuffer, nRecv, 0);
		cout << "send Len:" << nSend << endl;
		//6.關(guān)閉客戶端
		closesocket(clientSocket);
	}
	//7.關(guān)閉服務(wù)端
	closesocket(serverSocket);

	WSACleanup();//卸載window動(dòng)態(tài)網(wǎng)絡(luò)庫(kù)
	return 0;
}

效果

TIPS:利用sokit模擬工具模擬一個(gè)客戶端終端。

效果圖

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++實(shí)現(xiàn)簡(jiǎn)單插件機(jī)制原理解析

    C++實(shí)現(xiàn)簡(jiǎn)單插件機(jī)制原理解析

    這篇文章主要介紹了C++實(shí)現(xiàn)簡(jiǎn)單插件機(jī)制原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • C++實(shí)現(xiàn)LeetCode(210.課程清單之二)

    C++實(shí)現(xiàn)LeetCode(210.課程清單之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(210.課程清單之二),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++單例類模板詳解

    C++單例類模板詳解

    這篇文章主要介紹了C++單例類模板,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 關(guān)于C語(yǔ)言文件操作方法

    關(guān)于C語(yǔ)言文件操作方法

    這篇文章主要介紹了關(guān)于C語(yǔ)言文件操作方法的相關(guān)資料,需要的朋友可以參考下
    2018-03-03
  • 詳解DAG上的DP

    詳解DAG上的DP

    DAG:有向無環(huán)圖。DAG是學(xué)習(xí)動(dòng)態(tài)規(guī)劃的基礎(chǔ),很多問題都可以直接轉(zhuǎn)化為DAG上的最長(zhǎng)路、最短路或路徑計(jì)數(shù)問題。本文將詳細(xì)介紹DAG上的DP。
    2021-05-05
  • C++?重載運(yùn)算符在HotSpot?VM中的應(yīng)用小結(jié)

    C++?重載運(yùn)算符在HotSpot?VM中的應(yīng)用小結(jié)

    C++支持運(yùn)算符重載,對(duì)于Java開發(fā)者來說,這個(gè)可能比較陌生一些,因?yàn)镴ava不支持運(yùn)算符重載,下面介紹一下HotSpot?VM中的運(yùn)算符重載,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • C++模板的特化超詳細(xì)精講

    C++模板的特化超詳細(xì)精講

    最近我學(xué)習(xí)了C++中的模板相關(guān)知識(shí),模板是泛型編程的基礎(chǔ),十分重要。所以特意整理出來一篇文章供我們一起復(fù)習(xí)和學(xué)習(xí)
    2022-08-08
  • C++ vector的用法小結(jié)

    C++ vector的用法小結(jié)

    這篇文章主要介紹了c++中,vector是一個(gè)十分有用的容器,下面對(duì)這個(gè)容器做一下總結(jié)
    2013-12-12
  • C語(yǔ)言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實(shí)現(xiàn)

    C語(yǔ)言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實(shí)現(xiàn)

    堆就是用數(shù)組實(shí)現(xiàn)的二叉樹,所以它沒有使用父指針或者子指針。堆根據(jù)“堆屬性”來排序,“堆屬性”決定了樹中節(jié)點(diǎn)的位置
    2021-11-11
  • 從C++單例模式到線程安全詳解

    從C++單例模式到線程安全詳解

    下面小編就為大家?guī)硪黄獜腃++單例模式到線程安全詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12

最新評(píng)論