Select模型

2024-09-05 03:04
文章标签 模型 select

本文主要是介绍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;
}

这篇关于Select模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137789

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首