c++ Socket实现客户端与服务器数据传输

Android socket 客户端 C++服务端, 延时严重解决,贴点粘包代码 这个问题曾经困扰姐很久,但因为只是延时,而数据仍然正确,就将这个问题放在一边了。 昨天开始研究,以为是IO包没有NIO包快的原因,昨天改用NIO socket,写完一测,仍然有严重的延时呀。 姐差点傻眼,不过还好姐聪明,原来是姐缓存的数据没有全部处理掉呀,而是在等下次有数据进来的时候才处理,那些聊天消息其实早就发来了,被姐藏着呢。 哎,终于轻松了许多。 贴点代码处理现现眼吧 ps : 姐 阅读详情

c++ Socket实现客户端与服务器数据传输

这是自己第二次写博客,希望在博客记录自己的学习过程,欢迎大家评论!

实现: 客户端往服务器端发送一条数据,服务器端接收数据并输出;
服务器端再发送出接收到的数据给客户端!

根据自己的脑洞,想一下是否可以通过的改进实现简单的QQ聊天室!

少说废话,上代码

[文字描述都写在注释啦,也就那么点,]
服务器实现

一般情况下,先实现服务端的代码,这样逻辑可能会更清晰点,主要还是看个人的吧!
希望不要直接copy哦,至少自己动手敲一敲.

#define _WINSOCK_DEPRECATED_NO_WARNINGS 	//比较新版的vs,会警告我们不要使用一
											//下旧的函数,因为提供更新更安全的函数供我们使用,在这呢我们
											//还是用旧的吧,这个宏定义就是起屏蔽警告作用,VS下面也有提示的
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
#include<string>
#include<cstring>
#include<WS2tcpip.h>
#include <WinSock2.h>						//一般情况下,这个头文件位于windows.h之前,避免发生某些错误
#include<Windows.h>
#pragma comment(lib, "ws2_32.lib") 			//显示加载 ws2_32.dll	ws2_32.dll就是最新socket版本啦
using namespace std;

int main()
{
	cout << "-----------服务器-----------" << endl;

	//	1	初始化
	WSADATA wsadata;
	WSAStartup(MAKEWORD(2, 2), &wsadata);	//make word,你把鼠标移到WSAStartup看看参数列表,是不是就是一个word啊


	//	2	创建服务器的套接字
	SOCKET serviceSocket;
	serviceSocket = socket(AF_INET, SOCK_STREAM, 0);	//socket(协议族,socket数据传输方式,某个协议)	我们默认为0,其实就是一个宏
	if (SOCKET_ERROR == serviceSocket) {	
		cout << "套接字闯创建失败!" << endl;
	}
	else {
		cout << "套接字创建成功!" << endl;
	}


	//	3	绑定套接字	指定绑定的IP地址和端口号
	sockaddr_in socketAddr;								//一个绑定地址:有IP地址,有端口号,有协议族
	socketAddr.sin_family = AF_INET;
	socketAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");		//代码开头第一行我们定义的宏在这就其作用啦
	socketAddr.sin_port = htons(1234);
	int bRes = bind(serviceSocket, (SOCKADDR*)&socketAddr, sizeof(SOCKADDR));	//绑定注意的一点就是记得强制类型转换
	if (SOCKET_ERROR == bRes) {
		cout << "绑定失败!" << endl;
	}
	else {
		cout << "绑定成功!" << endl;
	}

	//	4	服务器监听	
	int lLen = listen(serviceSocket, 5);	//监听的第二个参数就是:能存放多少个客户端请求,到并发编程的时候很有用哦
	if (SOCKET_ERROR == lLen) {
		cout << "监听失败!" << endl;
	}
	else {
		cout << "监听成功!" << endl;
	}


	//	5	接受请求
	sockaddr_in revClientAddr;
	SOCKET recvClientSocket = INVALID_SOCKET;	//初始化一个接受的客户端socket
	int _revSize = sizeof(sockaddr_in);
	recvClientSocket = accept(serviceSocket, (SOCKADDR*)&revClientAddr, &_revSize);
	if (INVALID_SOCKET == recvClientSocket) {
		cout << "服务端接受请求失败!" << endl;
	}
	else {
		cout << "服务端接受请求成功!" << endl;
	}


	//	6	发送/接受 数据
	char recvBuf[1024] = {};
	int reLen = recv(recvClientSocket, recvBuf, 1024, 0);
	int sLen = send(recvClientSocket, recvBuf, reLen, 0);
	if (SOCKET_ERROR == reLen) {
		cout << "服务端发送数据失败" << endl;
	}
	else {
		cout << "服务器接受到数据:    " << recvBuf << endl << endl;
	}
		

	//	7	关闭socket
	closesocket(recvClientSocket);
	closesocket(serviceSocket);

	//	8	终止
	WSACleanup();

	cout << "服务器停止" << endl;
	cin.get();
	return 0;
}

客户端代码实现

在这里再提醒一点,运行程序的时候,我们是先运行服务端程序,再运行客户端程序.
所以有些同学可能会说"我们的代码都一样啊!怎么到我这就不成功了呢?",这是一个
低级的错误,我们要避免.

还有就是我还要强调,敲代码,像我一样的初学者,咋不能直接copy,慢慢敲,不急!
像我写博客也一样,慢慢写,不慌.

乍一看,客户端跟服务器端代码差不多啊!

也确实是,而且比服务器端还简单,在这里我就不再一个个写注释啦,其实跟上面的差不多,
少废话,开始吧!

#define _WINSOCK_DEPRECATED_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
#include<string>
#include<cstring>
#include<WS2tcpip.h>
#include <WinSock2.h>
#include<Windows.h>
#pragma comment(lib, "ws2_32.lib")  //加载 ws2_32.dll
using namespace std;

int main()
{
	cout << "-----------客户端-----------" << endl;

	//	1	初始化
	WSADATA wsadata;
	WSAStartup(MAKEWORD(2, 2), &wsadata);


	//	2	创建套接字
	SOCKET clientSocket = {};
	clientSocket = socket(PF_INET, SOCK_STREAM, 0);
	if (SOCKET_ERROR == clientSocket) {
		cout << "套接字闯创建失败!" << endl;
	}
	else {
		cout << "套接字创建成功!" << endl;
	}


	//	3	绑定套接字	指定绑定的IP地址和端口号
	sockaddr_in socketAddr;
	socketAddr.sin_family = PF_INET;
	socketAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	socketAddr.sin_port = htons(1234);
	int cRes = connect(clientSocket, (SOCKADDR*)&socketAddr, sizeof(SOCKADDR));
	if (SOCKET_ERROR == cRes) {
		cout << "客户端:\t\t与服务器连接失败....." << endl;	
	}
	else {
		cout << "客户端:\t\t与服务器连接成功....." << endl;		
	}


	//	4	发送请求
	char sendBuf[1024] = "from Client:   hello service.";
	send(clientSocket, sendBuf, strlen(sendBuf), 0);


	//	5	发送/接受 数据
	char recvBuf[1024] = {};
	recv(clientSocket, recvBuf, 1024, 0);
	cout << "客户端接收数据	:	" << recvBuf << endl << endl;
	

	//	6	关闭socket
	closesocket(clientSocket);


	//	7	终止
	WSACleanup();

	cout << "客户端退出" << endl;
	cin.get();
	return 0;
}


这个就是运行效果啦

在这里插入图片描述

根据简单实现数据的发送和接受,我们一步一步改善代码

1. 首先使得客户端不断向服务器发送数据

发送数据: (也可以叫做请求,一般嘛,客户端都是向服务器端请求获得某资源).

更改代码,与上面一样,其余部分代码不做改变
服务器:
// 循环接收数据
	while (true)
	{

		//	6	发送/接受 数据
		char recvBuf[4024] = {};
		int reLen = recv(recvClientSocket, recvBuf, 4024, 0);
		int sLen = send(recvClientSocket, recvBuf, reLen, 0);
		if (SOCKET_ERROR != reLen) {

			cout << "服务器接受到数据:    " << recvBuf << endl << endl;
			reLen = SOCKET_ERROR;
		}
	}
客户端:
while (true)
	{
		//	4	发送请求
		string s;
		cout << "输入发送数据:   " << endl;
		getline(cin, s);					//可输入空格,默认以换行符结束输入,
		send(clientSocket, (char*)s.c_str(), s.length(), 0);
		//	5	发送/接受 数据
		char recvBuf[4024] = {};
		recv(clientSocket, recvBuf, 4024, 0);
		cout << "客户端接收数据	:	" << recvBuf << endl << endl;
	}

提示:代码更改仅仅是增加一个while循环,思路很清晰. 客户端我们从控制台输入发送数据,变得更主动

2.进一步改善,再服务器端处理简单的业务逻辑

作为学习,简单来说呢,就是获得客户端发送来的数据做一些处理(判断).

下面我们提供一个简单的例子(在服务器上做修改):

服务器:

相对于上一阶段,就是在while循环里面添加条件判断语句.
简单吧!

while (true)
	{

		//	6	发送/接受 数据
		char recvBuf[1024] = {};
		int reLen = recv(recvClientSocket, recvBuf, 1024, 0);//阻塞函数,等待接受数据

		if (SOCKET_ERROR == reLen) {
			cout << "服务端发送数据失败" << endl;
		}
		else {
			cout << "请求命令:    " << recvBuf;
			if (0 == strcmp("cls", recvBuf)) {
				//服务端执行命令	
				system(recvBuf);		
			}
			// 中文请求仅仅是为了测试可行性,一般都是用英文
			else if(0 == strcmp("获取版本信息",recvBuf)) {
				//返回数据
				string verData = "Version: 1.0.1\nAuthor: Primer\nReleaseData: 2019-04-21";
				int sLen = send(recvClientSocket, (char*)verData.c_str(), verData.length(), 0);
			}
			else if(0 == strcmp("exit", recvBuf)){
				cout << endl << "退出服务器" << endl;
				break;
			}
			else {
				cout << "\t不正确..." << endl;
			}
			cout << endl;
		}
	}

客户端:

类似的修改,仅仅加了一个判断语句,不做过多的解释!

while (true)
	{
		//	4	发送请求
		string s;
		cout << "输入发送数据:\t";
		getline(cin, s);									//可输入空格,默认以换行符结束输入,
		send(clientSocket, (char*)s.c_str(), (int)s.length(), 0);
	
		//因为recv接受函数是阻塞函数,所以我们加以判断
		//请求正确我才接收数据,否则不影响我继续请求
		if(0 == strcmp("获取版本信息", s.c_str())) {
			char recvBuf[4024] = {};
			int reLen = recv(clientSocket, recvBuf, 4024, 0);//阻塞函数,等待接受数据
			cout << endl << recvBuf << endl << endl;
		}

	}
效果图:

在这里插入图片描述

若要实现更多的逻辑处理,自己大开脑洞.

3.传输结构体到服务器

数据有着各种各样的类型,文字,图片,音频,视频等都是数据,有些数据复杂有些简单,
刚开始部分我们传输的是一个字符型或者整型的数据到服务器上,那么这此我们传输
稍微复杂一些的数据—结构体.
…
编不下去了.

上代码!
第一:

在客户端和服务器端定义一个结构一致的结构体.

什么叫结构一致?
你在结构体里面定义的基本类型顺序一定要相同,不然在读取数据的时候,
由于字节对齐不正确,可能读取出来的就是乱码
. 自己体会.

我的结构体是真这样子的.


//////////////////////////////////////
// 定义一个学生结构体信息
typedef struct node {

	int		id;					//学号
	char	name[50];			//姓名
	char	sex[10];			//性别
	int		age;				//年龄
	char	className[100];		//班级

}STUDENT;



服务器端:

一样的,仅仅改动while循环部分

	STUDENT student = {};//服务器接受数据,数据格式需要和客户端数据格式一致
	while (true)
	{

		//	6	发送/接受 数据
		int reLen = recv(recvClientSocket, (char*)&student, 4024, 0);
		if (SOCKET_ERROR != reLen){

			cout << "服务端输出接受数据:  " << endl << endl;
			cout <<"学号:\t"<< student.id << endl;
			cout <<"姓名:\t"<< student.name << endl;
			cout <<"性别:\t"<< student.sex << endl;
			cout <<"年龄:\t"<< student.age << endl;
			cout <<"班级:\t"<< student.className << endl;
			memset(&student, 0, sizeof(student));
		}
	}

客户端:

更简单

	while (true)
	{
		//	4	发送数据
		STUDENT student;
		cout << "输入学生信息:[学号+姓名+性别+年龄+专业班级]\t";
		cin >> student.id >> student.name >> student.sex >> student.age >> student.className;
		//在发送结构体的受强制转换 提供地址形式发送即可	
		send(clientSocket, (char*)&student, sizeof(student), 0);
	}

效果图:

在这里插入图片描述

MFC 基于SOCKET 实现服务端客户端一对多 1.程序说明 开发环境是VS2008 ,基于socket实现一个服务端和多个客户端通信。 服务端: 指定端口,关闭和开启服务器监听; 将已连接客户端显示在客户端CListBox列表; 监听FD_ACCEPT|FD_READ|FD_CLOSE事件; 可选择和特定的已连接客户端通信; 通信数据和系统信息滚动显示。 客户端: 指定服务器IP、端口,关闭和连接服务器; 监听FD_CONNECT|FD_READ|FD_CLOSE事件, 顺便做了一个测试程序,测试程序作用是循环打开指定个数的客户端 阅读详情

相关推荐

C++网络编程(socket)TCP

1.C++网络编程要用到ws2_32.lib这个动态链接库,所以在程序运行前要添加动态链接库。在VS中添加动态连接库,右键项目解决方案,属性,连接器,输入,附加项,然后在开头位置输入ws2_32.lib;即可。 2.C++网络编程,头文件要包含sockwin2.h 3.C++网络编程,可以使用面向连接的TCP协议,也可以使用面向无连接的UDP协议 首先是使用TCP协议的示例 (1)服务器端

PHP在线学习笔记 1264

C++学习之网络通信Socket技术

C++之网络通信socket学习

Significance的博客 5492

玩玩socket-Linux下的socket程序

和C语言教程一样,我们从一个简单的“Hello World!”程序切入 socket 编程。 本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。 服务器端代码 server.cpp: #include <stdio.h> #include <string...

轻描时光 200

C++项目实战-socket编程

假设我们让发送数据的一端总是以大端字节序发送(对就是做一个统一的规定),那么接收数据的一端就知道我接受到的字节序总是大端字节序,如果接受方的字节序为小端,那么只需要大端数据装换成小端字节序就可以了。因此,Linux定义了下面这个新的通用的socket地址结构体,这个结构体不仅提供了足够大的空间用于存放地址值,而且是内存对齐的【内存对齐可以加快CPU访问速度,内存对齐问题见我的C语言专栏,有详细介绍】socket本意上“插座”的意思,在Linux环境中,用于表示进程间网络通信的特殊文件类型。...

weixin_46120107的博客 1万+

C++ Socket编程与Telnet类实现

在早期的Unix系统中,网络通信的实现依赖于文件描述符和进程间通信(IPC)机制。最初的socket接口在1983年由加州大学伯克利分校开发,并随着BSD(Berkeley Software Distribution)的发布而广泛传播,因此得名“Berkeley Sockets”。早期的Sockets API设计简洁,主要关注于提供一套简单的网络通信机制,以方便程序能够发送和接收数据。

weixin_42588672的博客 757

基于Socket的简易网络通信程序实现

TCP/IP四层模型从上至下依次为:应用层(Application Layer):负责具体业务逻辑的实现,如HTTP、FTP、SMTP等协议均运行于这一层。它是用户直接感知的部分,处理诸如网页请求、邮件发送、文件下载等功能。传输层(Transport Layer):核心作用是实现端到端的数据传输控制。主要协议包括TCP(Transmission Control Protocol)和UDP(User Datagram Protocol),分别提供可靠的字节流服务和不可靠但高效的数据报服务。

weixin_31620365的博客 1102

C/C++socket网络编程

socket多进程编程,tcp和udp流程图,socket函数, bind函数,listen函数,accept函数,connect函数,recv、recvfrom、read函数,send、write、sendto、sendmsg函数,close、shutdown函数,htonl、ntohl、htons、ntohs本地主机和网络字节序转换,inet_addr、inet_aton、inet_ntop,IP地址转换,setsockopt,fcntl,getpeername与getsockname

weixin_40355471的博客 9269

深入解析TCP客户端与服务器源码

传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。其设计目的之一是为了解决应用层之间可靠的数据传输问题。它通过三次握手建立连接,确保数据能够准确无误地送达目的地。TCP协议通过序列号、确认应答、超时重传等机制保证了数据的可靠传输。套接字API是进行网络通信的基础,而socket()函数是这一系列API中非常关键的一个。其作用是创建一个网络通信的端点,并返回一个套接字描述符(socket descriptor),用于后续的网络操作。函数的一般形式如下:domain。

weixin_28746213的博客 972

C++学习之Socket

Socket是什么 socket就是套接字的意思,用于描述地址和端口。应用程序通过socket向网络发出请求或者回应。 socket编程有三种: 流式套接字(SOCK_STREAM) 数据报套接字(SOCK_DGRAM) 原始套接字(SOCK_RAW) 前两者较常用。基于TCP的socket编程是流式套接字。 服务端和客户端都做了什么 服务端: 建立socket,声明自身的port和IP,并绑定到socket,使用listen监听,然后不断用accept去查看是否有连接。如果有,捕获socket,并通

六元的博客 1万+

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8127

SAP PP未清生产订单关闭物料退料、新工单发料批量处理

( werks = '1001' lgort = 'A004' lgobe = '组装-成品组装' )( werks = '1002' lgort = 'C006' lgobe = '组装-二车间' )( werks = '1002' lgort = 'C007' lgobe = '组装-二车间' )( werks = '1001' lgort = 'A007' lgobe = '组装-MS' )( werks = '1001' lgort = 'A008' lgobe = '组装-GW' )

dingqing86的专栏 1193

c++ Socket实现客户端与服务器数据传输 - 升级篇

????十分感谢,已收到大家热情的反馈,此刻特地挤出一些时间来完善以前发的一篇博文,希望能更好帮助大家解决问题,更合适新手 socket 入门实践。 @附加完善前的博文: c++ Socket实现客户端与服务器数据传输 - 旧版 @以下是完善后的版本,基于旧版修改: 文章目录认识 Socket 认识 Socket 网络通讯的重要基础之一, ...

Primer5 1632

移相变压器Simulink建模与HVDC系统仿真实践

移相变压器是电力电子领域实现精确相位调节的核心设备,其通过特殊绕组设计改变输出电压相位角,在解决环网潮流不均、阻尼功率振荡等场景具有关键作用。本文基于MATLAB/Simulink环境,详细解析移相变压器的建模原理与技术实现,包括磁路耦合特性模拟、参数计算方法和控制策略设计。针对HVDC高压直流输电和FACTS柔性交流输电系统等典型应用,提供仿真模型搭建技巧与问题排查指南,特别涵盖新能源并网场景下的相位调节优化方案。通过实测数据验证,所建模型在稳态精度和动态响应方面均满足工程要求,为电力系统稳定性分析提供有

weixin_28278377的博客 272

c++实现socket通信测试

服务器端代码: // socketTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #pragma comment (lib,"ws2_32.lib") #define MAXBUFLEN 256 #define PORT 44965 using namespace

ghevinn欢迎您光临 9869

InVEST模型实战指南:从水源涵养到热岛缓解的生态系统服务评估

本文提供了InVEST模型的实战指南,详细介绍了从环境搭建、数据预处理到核心模型应用的完整流程。通过水源涵养、碳存储、土壤保持和城市热岛缓解等核心模型的拆解,帮助生态学者与规划者系统量化评估生态系统服务,将复杂的生态价值转化为直观的空间数据与地图,为科学决策提供有力支撑。

weixin_29197051的博客 430

要理解成本中心与利润中心的根本区别与适用场景,需从 “责任范围、考核核心、管理目标” 三个核心维度切入,同时明确二者在企业管理体系中的联动关系

摘要: 成本中心与利润核心区别在于责任范围、考核目标和管理权限。成本中心仅对成本负责(如生产、行政部门),考核成本控制能力;利润中心需同时管控成本与收入(如独立产品线、区域分公司),以利润为核心指标。选择标准取决于单元是否拥有收入决策权:无收入权的支持/执行部门设为成本中心,能独立经营、核算盈亏的单元设为利润中心。二者协同运作,成本中心为利润中心提供基础支持,利润中心的需求动态影响成本中心资源配置,共同实现企业整体目标。划分本质是确保考核指标与责任范围匹配,避免管理失效。

金牌架构师 659

Socket详解及C++应用示例

【代码】Socket详解及C++应用示例。

2509_93923299的博客 298

在 PFCG 中完成 SAP Fiori 对象分配:把 Business Catalog、Space、Page 与授权一次讲透

摘要:SAP Fiori权限配置的关键在于理解Business Catalog与Space的分层授权逻辑。传统SAP GUI中直接分配事务码的方式不适用于Fiori环境,必须通过PFCG为角色分配Catalog(提供应用访问权限)和Space(控制首页展示结构)。Catalog会自动解析所需OData服务授权,而Space则决定用户在Launchpad中看到的导航布局。常见错误包括直接分配Page而非其所属Space,或仅配置Space而忽略Catalog。最佳实践是优先使用Catalog驱动授权提议,再在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 327

Linux C/C++ UDP Socket通信实例

环境:Linux 语言:C/C++ 通信方式:UDP 服务器端的步骤如下: socket: 建立一个socket bind: 将这个socket绑定在某个端口上(AF_INET) recvfrom: 如果没有客户端发起请求,则会阻塞在这个函数里 close: 通信完成后关闭socket 客户端的步骤如下: 5. socket: 建立一个socket sendto: 向服务器的某个端口发起请求(AF_INET) clos

lievech的博客 1044

华为OD机试 - 城市聚集度(Python/JS/C/C++ 2025 A卷 200分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1132

YOLOv8改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 625

百万并发web服务器-简单的服务器

我们再本地实现了一个商品查询的服务,输入query,返回与之相关的商品。现在的问题是,如何搭建一个服务器,将这个服务提供给客户使用。一种最简单的方式就是使用socket实现一个服务器。Socket编程步骤使用c++来实现一个服务器接着实现一个客户端对于第一次使用socket编程来说,有太多不知道的东西了,一点一点梳理整个流程,对于服务端来说。

he_wen_jie的博客 905

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux下基于C/C++的Socket编程实例

Linux下基于C/C++的Socket编程实例 Socket编程实例    代码实例中的服务器通过socket连接向客户端发送字符串"Hello, you are connected!"。只要在服务器上运行该服务器软件,在客户端运行客户软件,客户端就会收到该字符串。    该服务器软件代码如下: #include #include #include #

tnt32的专栏 724

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于TCP/IP的网络编程(C++语言编程)

讲解视频连接:https://www.bilibili.com/video/av36095519 基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(visual studio下): 第一部分 服务器端   一、创建服务器套接字(create)。   二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。   三...

moxiaolin的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

socket实现局域网语音通话 c++ winapi

前几天看书了解了语音通话的原理,就很想自己尝试一下,然后就——做出来了,嘻嘻,先看看效果吧! 因为这边没办法上传视频,所以只能录制一个gif大家看一下效果,但是是可以听到声音的。 源码的话我已经上传到csdn了,这个是下载链接:(正在审核。。。) 功能介绍: 1.支持录音设备查找以及播放设备查找 2.支持局域网语音通话 3.通话包含语音来电提醒和挂断电话的提示信息,还能实时的获取在线用户的数量以及对应的id,其他功能正在开发,期待大家一起进步。 Summary: 1.socket通信 2.wavein和

weixin_47232366的博客 3501

Socket基本操作的C++封装--以及Socket通信实践

文章目录接口类的实现(抽象类)_public_socket.hTCP_INTERFACE.h(作用于win平台)服务器端封装TCP_SOCKET_SERVER.hTCP_SOCKET_SERVER.cpp客户端的封装TCP_SOCKET_CLIENT.hTCP_SOCKET_CLIENT.cpp实例一:回声程序通信服务器回声程序客户端通信程序打印的结果:实例二:文件操作,传送图片(掌握重复传包)分析待传图片发送端程序接收端程序接收结果 接口类的实现(抽象类) _public_socket.h 该头文件用于

CppYyds的博客 2564
上一篇: opencv读取摄像头数据不能有效关闭窗口?
下一篇: C++实现双向链表
Primer@.com
博客等级 码龄9年 524粉丝 292原创
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值