当前位置: 首页 > article >正文

windows环境下使用socket进行tcp通信

 客户端

#define WIN32 _LEAN_AND_MEAN
#define _WINSOCK_DEPRECATED_NO_WARNINGS 
#include<iostream>
#include<WinSock2.h>
#include<Windows.h>
#include<stdio.h>

using namespace std;
#pragma comment (lib, "ws2_32.lib") 
//#ws2_32.lib
int main()
{
	WORD ver = MAKEWORD(2, 2);
	WSADATA dat;
	WSAStartup(ver, &dat);
	//1.创立socket 1.IPV4网络  类型:数据流  TCP
	//套接字
	SOCKET _sock = socket(AF_INET, SOCK_STREAM, 0);
	//2.connect连接服务器
	sockaddr_in _sin = {};
	_sin.sin_family = AF_INET;
	_sin.sin_port = htons(4567);//host_to_net unsigned short
	_sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	if (SOCKET_ERROR == connect(_sock, (sockaddr*)&_sin, sizeof(_sin)))
	{
		printf("链接失败\n");
	}
	else {
		printf("链接网络成功\n");
	};
	//3,recv接收数据 监听网络接口
	char recvbuffer[1024] = {};
	;
	if (SOCKET_ERROR == recv(_sock, recvbuffer, sizeof(recvbuffer), 0))
	{
		printf("接受失败\n");
	}
	else {
		printf("接受成功\n");
	}
	cout << recvbuffer << endl;

	//6.关闭
	closesocket(_sock);
	WSACleanup();
	return 0;
}

服务端

#define WIN32 _LEAN_AND_MEAN
#define _WINSOCK_DEPRECATED_NO_WARNINGS 
#include<iostream>
#include<WinSock2.h>
#include<Windows.h>

using namespace std;
#pragma comment (lib, "ws2_32.lib") 
//#ws2_32.lib
int main()
{
	WORD ver = MAKEWORD(2, 2);
	WSADATA dat;
	WSAStartup(ver, &dat);
	//1.创立socket 1.IPV4网络  类型:数据流  TCP
	//套接字
	SOCKET _sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	//2.bind绑定接收客户端
	sockaddr_in _sin = {};
	_sin.sin_family = AF_INET;
	_sin.sin_port = htons(4567);//host_to_net unsigned short
	_sin.sin_addr.S_un.S_addr = INADDR_ANY;//inet_addr("127.0.0.1")
	if (SOCKET_ERROR==bind(_sock, (sockaddr*)&_sin, sizeof(_sin)) )
	{
		printf("绑定失败\n");
	}
	else {
		printf("绑定网络成功\n");
	};
	//3,listen 监听网络接口
	if (SOCKET_ERROR == listen(_sock, 5))
	{
		printf("监听失败\n");
	}
	else {
		printf("监听成功\n");
	}

	//4.接受数据
	sockaddr_in _clientaddr = {};
	int naddrlen = sizeof(_clientaddr);
	SOCKET _clientsocket = INVALID_SOCKET;
	while (true)
	{
		_clientsocket = accept(_sock, (sockaddr*)&_clientaddr, &naddrlen);
		if (_clientsocket == INVALID_SOCKET)
		{
			printf("错误,接受无效客户端socket....\n");
		}
		cout << "新客户端加入: ip= " << inet_ntoa(_clientaddr.sin_addr)<<endl; 
		//5.send 向客户端发送一条数据
		char msgBuf[] = "hello, I'M server";
		send(_clientsocket, msgBuf, strlen(msgBuf) + 1, 0);
	}
	//6.关闭
	closesocket(_sock);
	WSACleanup();
	return 0;
}

 


http://www.kler.cn/news/335988.html

相关文章:

  • .NET NoSQL 嵌入式数据库 LiteDB 使用教程
  • Unity3D播放GIF图片 插件播放
  • springboot工程中使用tcp协议
  • LeetCode 209 Minimum Size Subarray Sum 题目解析和python代码
  • 【ADC】噪声(1)噪声分类
  • 医院管理自动化:Spring Boot技术实践
  • C语言复习概要(四)
  • 视觉定位Revisit Anything
  • 在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法
  • 代码随想录算法训练营第二十七天|第77题. 组合 216.组合总和III 17.电话号码的字母组合
  • 胡超:引领中美能源与文化合作的创意先锋
  • 《从零开始大模型开发与微调》真的把大模型说透了!零基础入门一定要看!
  • [Linux] Linux 初识进程地址空间 (进程地址空间第一弹)
  • 秒表实验(Proteus 与Keil uVision联合仿真)
  • 51c视觉~CV~合集2
  • Java之String类
  • PyEcharts教程(001):PyEcharts介绍
  • 力扣977.有序数组的平方
  • 【Python】Python-JOSE:Python 中的 JSON Web Token 处理库
  • Neo4j CQL语句 使用教程