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

Select模型

服务端:

#include <iostream>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <windows.h>int main()
{WSADATA lpWSAData;WSAStartup(MAKEWORD(2, 2), &lpWSAData);SOCKADDR_IN saddr{ 0 };saddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");saddr.sin_family = AF_INET;saddr.sin_port = htons(50123);SOCKET SerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);bind(SerSocket, (PSOCKADDR)&saddr, sizeof(saddr));listen(SerSocket, SOMAXCONN);fd_set all_Sockets{ 0 };FD_SET(SerSocket, &all_Sockets);while (true){fd_set fdRead = all_Sockets;int sRet = select(NULL, &fdRead, NULL, NULL, NULL);if (sRet > 0){for (size_t i = 0; i < all_Sockets.fd_count; i++){if (FD_ISSET(all_Sockets.fd_array[i], &fdRead)){if (fdRead.fd_array[i] == SerSocket){if (fdRead.fd_count < FD_SETSIZE){SOCKADDR_IN temp{ 0 };int length = sizeof(SOCKADDR_IN);SOCKET NewSocket = accept(SerSocket, (PSOCKADDR)&temp, &length);FD_SET(NewSocket, &all_Sockets);printf("IP:%s\t", inet_ntoa(temp.sin_addr));char buff[MAXBYTE]{ 0 };sprintf(buff, "%d", ntohs(temp.sin_port));printf("Port:%s\n",buff);}else{printf("Clients too much!");}}else{char buffer[0x500]{0};sRet = recv(fdRead.fd_array[i], buffer, sizeof(buffer), 0);if (sRet > 0){std::cout << buffer << std::endl;}else{closesocket(fdRead.fd_array[i]);FD_CLR(fdRead.fd_array[i], &all_Sockets);}}}}}}shutdown(SerSocket, SD_BOTH);WSACleanup();system("pause");return 0;
}

客户端:

#include <iostream>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <windows.h>int main()
{WSADATA lpWSAData;WSAStartup(MAKEWORD(2, 2), &lpWSAData);SOCKADDR_IN caddr{ 0 };caddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");caddr.sin_family = AF_INET;caddr.sin_port = htons(50123);SOCKET CliSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);int iMode = 1;ioctlsocket(CliSocket, FIONBIO, (u_long*)&iMode);while (true){int Ret = connect(CliSocket, (PSOCKADDR)&caddr, sizeof(caddr));if (Ret == SOCKET_ERROR){int nError = WSAGetLastError();if (nError == WSAEWOULDBLOCK || nError == WSAEINVAL){Sleep(1);printf("check connect!\r\n");continue;}else if (nError == WSAEISCONN){break;}else{printf("connect failed!\r\n");closesocket(CliSocket);WSACleanup();return 0;}}}while (true){printf("\r\ninput you send buffer:\r\n");char str[256]{ 0 };std::cin >> str;while (true){int Ret = send(CliSocket, str, strlen(str), 0);if (Ret == SOCKET_ERROR){int nError = WSAGetLastError();if (nError == WSAEWOULDBLOCK){Sleep(1);continue;}else{printf("send failed!\r\n");closesocket(CliSocket);WSACleanup();return 0;}}break;}}system("pause");return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VMware Workstation v17.6 中文注册精简版
  • 使用mysqldump命令时提示ERROR 1064 (42000)
  • LeetCode 2860.让所有学生保持开心的分组方法数:排序+遍历
  • 分享——有趣的题目
  • 一文教你学会java代码审计
  • 网络编程学习:TCP/IP协议
  • 数据库系统 第35节 数据库加密
  • HarmonyOS开发实战( Beta5版)Swiper高性能开发指南
  • 传统CV算法——图像基本操作与形态学操作
  • 【机器学习】.fit_transform()跟.transform()的区别
  • PDF文本指令解析与文本水印去除
  • Qt 字符串的编码方式,以及反斜杠加3个数字是什么编码\344\275\240,如何生成
  • TCP协议多进程多线程并发服务器
  • glsl着色器学习(六)
  • 第 20 章 DOM 进阶
  • cookie和session
  • CSS 三角实现
  • Electron入门介绍
  • ES6简单总结(搭配简单的讲解和小案例)
  • js操作时间(持续更新)
  • npx命令介绍
  • php ci框架整合银盛支付
  • Python利用正则抓取网页内容保存到本地
  • 当SetTimeout遇到了字符串
  • 基于web的全景—— Pannellum小试
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 以太坊客户端Geth命令参数详解
  • ​渐进式Web应用PWA的未来
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #ifdef 的技巧用法
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (笔试题)分解质因式
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (篇九)MySQL常用内置函数
  • (转)iOS字体
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .form文件_一篇文章学会文件上传
  • .Net CF下精确的计时器
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core 外观者设计模式 实现,多种支付选择
  • .Net Core 微服务之Consul(二)-集群搭建
  • .net 提取注释生成API文档 帮助文档
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • @31省区市高考时间表来了,祝考试成功
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [Android]Tool-Systrace
  • [C#] 如何调用Python脚本程序
  • [C++初阶]string类的详解