面向连接实现



                                                                TCP协议

前提

1.在windows下初始化socket库

WSAStartUp(

	WORD wVersionRequested, 	//库的要求
	LPWSADATA lpWSAData 		//库的各种参数
)    //初始化库的API

2.   DLL:WS2_32.DLL

      LIB:WS2_32.LIB

3.包含头文件 winsock2.h

4.加载动态库  #pragma comment(lib,"ws2_32.lib")

 1.服务器    //先接收后发送

            1)创建Socket

SOCKET sockSver = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);   //基于IP,TCP协议。

2)绑定端口和IP

		sockaddr_in svraddr = {0};
		svraddr.sin_family = AF_INET;  //基于IP协议族
		svraddr.sin_port   = htons(5531); //端口
		svraddr.sin_addr.S_un.S_addr = htons(INADDR_ANY);
		bind(socsver,(struct sockaddr *)&svraddr,sizeof(svraddr));

3)侦听

listen(socsver,SOMAXCONN);   //最大数量级

4)等待客户端,与客户端连接

struct sockaddr_in clientadrr = {0};
	int nLen = sizeof(clientadrr);

	SOCKET sockclient = accept		//连接,阻塞函数,等待客户端的连接,连接成功就返回一个套接字
				(
					socsver,
					(struct sockaddr*)&clientadrr,
					&nLen
				  ); 

5)接收

struct sockaddr_in clientadrr = {0};
	int nLen = sizeof(clientadrr);

	SOCKET sockclient = accept		//连接,阻塞函数,等待客户端的连接,连接成功就返回一个套接字
				(
					socsver,
					(struct sockaddr*)&clientadrr,
					&nLen
				  ); 


5)数据收发


char Szrecv[256] = "你好我是服务器";

send(sockclient,Szrecv,sizeof(Szrecv),0);


6)关闭socket

closesocket(sockclient);
closesocket(socsver);

2. 客户端 //先发送后接受

            1)创建socket

SOCKET sockclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   

2)连接服务器

struct sockaddr_in addr = {0};


addr.sin_family = AF_INET;
addr.sin_port   = htons(5531);
addr.sin_addr.S_un.S_addr = inet_addr("115.150.231.20");


connect(sock
client, (struct sockaddr*)&addr, sizeof(addr));

3)数据收发

//数据收发
//发送数据
char szSend[256] = "我是客户端1";
send(socklient, szSend,sizeof(szSend),0);

//接受数据
char Szrev[256] = {0};
recv(socklient,Szrev,sizeof(Szrev),0);
cout << Szrev << endl;

4)关闭套接字
closesocket(socklient);


//写的很烂,只是为了给自己留个笔记。仅供随便看看


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值