Windows—TCP编程

news2024/9/30 12:24:08

服务端骨架:

#include <iostream>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <windows.h>

int main()
{
	WORD wVersionRequested = MAKEWORD(2, 2);
	WSADATA WSAData;
	WSAStartup(wVersionRequested, &WSAData);

	//本程序创建一个TCP套接字
	SOCKET socScrver = socket(AF_INET, SOCK_STREAM,0);

	//准备一个服务器地址结构体,指定服务器监听的端口(8000)
	SOCKADDR_IN socSrv{ 0 };
	socSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//接受来自任何IP地址的连接
	socSrv.sin_family = AF_INET;
	socSrv.sin_port = 8000;

	//将本程序的套接字与服务器地址\端口绑定
	bind(socScrver, (sockaddr*)&socSrv, sizeof(SOCKADDR_IN));

	//使套接字进入监听状态,准备接受客户端的连接请求
	listen(socScrver, SOMAXCONN);

	sockaddr addr;
	UINT length = sizeof(sockaddr);
	while (TRUE)
	{
		//服务端进入连接等待状态,如果有连接,accept函数会返回一个新的套接字接口sockConn,该接口代表了与客户端建立的连接。
		SOCKET sockConn = accept(socScrver, &addr, &length);
		//通过这个连接状态套接字接口,发送消息
		send(sockConn, "I am Server", strlen("I am Server") + 1, NULL);
		CHAR ClientBuffer[MAX_PATH] = { 0 };
		//通过这个连接状态套接字接口,接受消息
		recv(sockConn, ClientBuffer, sizeof(ClientBuffer) / sizeof(CHAR), 0);
		printf("客户端消息:%s\n", ClientBuffer);
		//关闭连接状态套接字接口
		closesocket(sockConn);
	}
	//清理
	closesocket(socScrver);
	WSACleanup();
	system("pause");
	return 0;
}

客服端骨架:

#include <iostream>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <windows.h>

int main()
{
	WORD wVersionRequested = MAKEWORD(2, 2);
	WSADATA WSAData;
	WSAStartup(wVersionRequested, &WSAData);

	//本程序创建一个TCP套接字
	SOCKET socClient = socket(AF_INET, SOCK_STREAM, 0);

	//指定一个服务器地址,指定服务器监听的端口
	SOCKADDR_IN socSrv{ 0 };
	socSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	socSrv.sin_family = AF_INET;
	socSrv.sin_port = 8000;

	//服务器与我的套接字建立连接(发送连接请求)
	connect(socClient, (sockaddr*)&socSrv, sizeof(SOCKADDR_IN));

	//接受服务器端的消息
	CHAR ClientBuffer[MAX_PATH] = { 0 };
	recv(socClient, ClientBuffer, sizeof(ClientBuffer) / sizeof(CHAR), 0);
	printf("服务端消息:%s\n", ClientBuffer);

	//给服务器端的发送消息
	send(socClient, "I am Client", strlen("I am Client") + 1, NULL);

	//清理
	closesocket(socClient);
	WSACleanup();
	system("pause");
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调用第三方API,可能会遇到的问题?

在实际工作中&#xff0c;我们经常需要在项目中调用第三方API接口&#xff0c;获取数据&#xff0c;或者上报数据&#xff0c;进行数据交换和通信。 那么&#xff0c;调用第三方API接口会遇到哪些问题&#xff1f;如何解决这些问题呢&#xff1f; 这篇文章就跟大家一起聊聊第…

浅谈国产大模型的过去、现在以及未来

随着时间推移&#xff0c;AI与大模型正在肉眼可见的降温。 怎样去衡量一款AI产品是否成功&#xff1f; 这个问题如果放在两年前&#xff0c;很多人给出的答案会集中在AI的狭义领域&#xff0c;AlphaGo、Siri、Google Assistant&#xff0c;或是用于解锁手机的图像识别技术&am…

根据json字符串 自动生成 实体类 Model Entity .NET

①访问json2csharp的在线工具&#xff1a;http://json2csharp.com/ ②复制json字符串&#xff0c;粘贴到左边&#xff0c;按下面Convert按钮 ③右边就是 生成的 实体类 &#xff0c;直接复制到 .cs文件内就能使用 ④或者点击 Zip As File 按钮&#xff0c;直接生成 N个.cs文…

编写 prometheus exporter监控 mysql group replication

用 prometheus 监控 mysql&#xff0c;之前用 mysqld_exporter 收集mysql 的监控指标&#xff0c;发现并没有 mysql 组复制状态的指标。只能自己收集了&#xff0c;编写脚本收集指标推送到 pushgateway&#xff0c;这个办法更简单但是扩缩容不是很方便。下面用 python 编写的一…

C++类模板初阶

目录 1. 泛型编程 概念&#xff1a; 2.函数模板 2.1函数摸版概念&#xff1a; 2.2函数模板格式 2.3函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3.类模板 3.1 类模板的定义格式 3.2类模板实现示例 3.3类模板的实例化 1. 泛型编程 概念&#xff1…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机本身的数据保存(CustomData)功能(Python)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机本身的数据保存&#xff08;CustomData&#xff09;功能&#xff08;Python&#xff09; Baumer工业相机Baumer工业相机的数据保存&#xff08;CustomData&#xff09;功能的技术背景CameraExplorer如何使用数据保存&#…

医院用过期药要赔偿多少?

法律规定&#xff0c;经营者提供商品或者服务有欺诈行为的&#xff0c;需要加倍赔偿&#xff0c;赔偿为消费者所购买商品的价款或者接受服务的费用的三倍。&#xff08;金额不足五百元的&#xff0c;为五百元。但是如果商家明知道是过期的&#xff0c;还是要卖&#xff0c;是可…

中秋节超市生鲜最全陈列指南

中秋节将至&#xff0c;超市提前布局中秋陈列&#xff0c;打好秋季营销第一战&#xff0c;中秋节期间&#xff0c;从小分类上说&#xff1a;结球类、调味类、豆类、精品蔬菜、茄果类的蔬菜销售需求比较旺盛的。 从蔬菜的单品上来数据分析得出结果是如下单品在节日期间销售上排…

使用docker-compose 搭建es集群

首先需要安装docker&#xff0c;这里就略过了 在第一台机器上创建 docker-compose.yml 文件内容如下&#xff1a; services:es:image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2container_name: esenvironment:- bootstrap.memory_locktrue- xpack.security.ena…

精准定位:数字化营销的策略基石

在当今数字化时代&#xff0c;营销环境发生了巨大变化。精准定位已成为数字化营销的关键策略基石&#xff0c;对于企业实现高效营销、提升市场竞争力至关重要。 一、精准定位的重要性 1. 提高营销效率&#xff1a;通过精准定位目标客户群体&#xff0c;企业能够将有限的营销资…

【数据集】部分SAR舰船数据集,用于目标检测

SAR舰船目标检测数据集 1、SSDD 原文&#xff1a;https://sci-hub.se/10.1109/BIGSARDATA.2017.8124934 下载连接&#xff1a;https://github.com/TianwenZhang0825/Official-SSDD/blob/main/README.md 数据介绍&#xff1a; 数量&#xff1a;1160 来源&#xff1a;RadarSat-…

Golang | Leetcode Golang题解之第357题统计各位数字都不同的数字个数

题目&#xff1a; 题解&#xff1a; func countNumbersWithUniqueDigits(n int) int {if n 0 {return 1}if n 1 {return 10}ans, cur : 10, 9for i : 0; i < n-1; i {cur * 9 - ians cur}return ans }

大小端字节序存储介绍

我们知道整形在内存中的存储方式了&#xff0c;但是在VS编译器里发现好像顺序不一样&#xff0c;类如&#xff1a; 这里就涉及到大小端字节序存储了。 什么是大端小端 大端存储模式&#xff1a;是指数据的低位保存在内存的高地址中&#xff0c;数据的高位&#xff0c;保存在内…

《黑神话:悟空》的AI技术解析:游戏智能的新境界

2024 年 8 月的第三周&#xff0c;哪哪都是悟空的声音&#xff0c;让我一度想起当年国足打进世界杯&#xff0c;学校不上课组织看球的场景。 从我个人情感而言&#xff0c;《黑神话&#xff1a;悟空》带来的震撼&#xff0c;惊喜和冲击不亚于当年国足在世界杯赛场上跟巴西踢球。…

海康VisionMaster使用学习笔记16-使用通信切换方案

使用通信切换方案 在VisionMaster中&#xff0c;用户可以使用通信功能来进行方案的切换&#xff0c;该使用方式能提升生产现场的自动化程度&#xff0c;便于VisionMaster与其他设备进行协同操作。 本文介绍VisionMaster中使用通信切换方案的基本操作步骤。以VisionMaster 4.2…

一家餐饮店的流量之路:以“铁哥饭店”为例,探索私域流量增长的深度策略

摘要&#xff1a;本文深入剖析了位于五线城市的小型餐厅“铁哥饭店”在面临流量增长困境时的具体挑战&#xff0c;并通过详细分析其原因&#xff0c;结合当前互联网营销的最新趋势与工具&#xff0c;如“21链动模式”、“AI智能名片”及“S2B2C商城小程序”&#xff0c;提出了一…

收银系统源码-【满额立减】功能介绍

连锁店收银系统源码—多商户平台入驻商城已上线-CSDN博客文章浏览阅读1k次。零售行业连锁店收银管理系统多商户入驻本地生活即时零售平台商城https://blog.csdn.net/V15850290240/article/details/141310629 详细介绍请查看上方文章↑↑↑ 详细介绍请查看上方文章↑↑↑ 详细…

汽车冷却液温度传感器的作用与检测方法

汽车冷却系统中的关键部件之一是冷却液温度传感器&#xff0c;它的位置通常在发动机的缸体或水泵附近&#xff0c;与冷却液直接接触。该传感器的作用是监测发动机冷却液的温度&#xff0c;它采用负温度系数热敏电阻&#xff0c;这种电阻随温度升高而降低。当冷却液温度达到预定…

【信创】全面揭秘Linux操作系统中的DNS解析流程 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【信创】全面揭秘Linux操作系统中的DNS解析流程 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于Linux操作系统上DNS解析的第一篇文章。DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的…

容器篇(JavaSE - 单列集合)(持续更新迭代)

作者&#xff1a;研J小政 课堂&#xff1a;wclass &#xff08;有什么弊端请私信我&#xff0c;目前参考众多资料精华整理过程过中&#xff09; 章节&#xff1a;单列集合&#xff01; 进度&#xff1a;持续更新迭代&#xff01; 录课状态&#xff1a;待录 参考文献 有意…