windows Socket简单编程实例
服务端
#include <winsock2.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}
int main(int argc, char* argv[])
{WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){error_handing("WSAStartup() error");}SOCKET hServSock, hClntSock;SOCKADDR_IN servAddr, clntAddr;int szClntAddr;char message[] = "hello world!";if (argc != 2){printf("Usage : %s <port>\n", argv[0]);exit(1);}hServSock = socket(AF_INET, SOCK_STREAM, 0);if (hServSock == INVALID_SOCKET){error_handing("socket() error");}memset(&servAddr, 0, sizeof(servAddr));servAddr.sin_family = AF_INET;servAddr.sin_addr.s_addr = htonl(INADDR_ANY);servAddr.sin_port = htons(atoi(argv[1]));if (bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){error_handing("bind() error");}if (listen(hServSock, 5) == SOCKET_ERROR){error_handing("listen() error");}szClntAddr = sizeof(clntAddr);hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr);if (hClntSock == INVALID_SOCKET){error_handing("accept() error");}closesocket(hClntSock);closesocket(hServSock);WSACleanup();return 0;
}
客户端
#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <winsock2.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char* argv[])
{WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){error_handing("WSAStartup() error");}SOCKET hSocket;if (argc != 3){error_handing("argc error");}hSocket = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN servAddr;memset(&servAddr, 0, sizeof(servAddr));servAddr.sin_family = AF_INET;servAddr.sin_addr.S_un.S_addr = inet_addr(argv[1]);servAddr.sin_port = htons(atoi(argv[2]));if (connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){error_handing("connect error");}char message[30];int strlen = recv(hSocket, message, sizeof(message) - 1, 0);if (strlen == -1){error_handing("recv error");}printf("recv message: %s\n", message);closesocket(hSocket);WSACleanup();return 0;
}
相关文章:
windows Socket简单编程实例
服务端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…...
外企开展中国在线业务的三种网络加速方案:含免ICP备案CDN解决方案
中国作为全球除美国外最大的消费市场,是几乎每个国际化企业都想要深入挖掘的市场,但外国企业在中国开展在线业务需要面临一个比较特殊的挑战:互联网防火墙(GFW)。为此所有想要在中国市场有所作为的外企都需要首先解决这…...
室内UWB定位到达角(AOA)测量精度的提高
抽象的 本文表明,用于在视线 (LoS) 中定位标签的干涉定位系统的方位角测量精度可以通过利用脉冲无线电超宽带 (IR-UWB) 信号来提高,并且无需增加频率带宽。该解决方案采用相位相关 (PC) 方法,最初应用于连续波 (CW) 信号,后来适用于超宽带 (UWB) 脉冲信号。将获得的结果与…...
“深入理解JVM:探索Java虚拟机的内部工作原理“
标题:深入理解JVM:探索Java虚拟机的内部工作原理 摘要:本文将深入探索Java虚拟机(JVM)的内部工作原理,包括JVM的架构、类加载、内存管理、垃圾回收机制等方面。通过理解JVM的内部工作原理,我们…...
TC3XX - MCAL知识点(三十一):FlsLoader MCAL配置及代码实战
目录 1、概述 2、MCAL配置 2.1、FlsLoaderGeneral 2.2、FlsLoaderOptionalApi 2.3、FlsLoaderPFlash0ProtConfig 3、测试代码及结果 3.1、测试代码 3.1.1、初始化 3....
Yii2 mongodb分组查询
$data MongoDbModelName::getCollection()->aggregate([[$group > [_id > $user_id, //通过user_id分组去重total > [$sum > 1]],],[$match > [total > [$gt > 1]]]],[allowDiskUse > true]);相当于 select user_id,count(1) as total from Mongo…...
Springboot的多种部署方式和Linux具体的 service 操作介绍
前言 Springboot 内置了 tomcat,部署十分的方便,无需额外的应用服务器。但是在部署过程中,却有很多种方式 本文总结在工作中常见的 linux 部署方式 一、通过nohup命令部署 linux 可以通过 nohup 命令将项目部署在后台,即使终端…...
【EI/SCOPUS检索】2023年第二届光学成像与测量国际会议 (ICOIM2023)
2023年第二届光学成像与量国际会议 (ICOIM2023) 2023 2nd International Conference on Optical Imaging and Measurement 光学成像与测量密切相关且具有广泛的应用,如显微镜、望远镜、传感器等。通常,成像是测量的基础…...
6 个简单步骤,教你创建可视化看板工作流
看板是一种相当流行的工作管理工具,团队和组织使用它来可视化工作流程,限制当前正在进行的工作,并最大限度地提高流程效率。 看板的一些主要特点包括: ✓ 看板提供了对工作流程进行可视化控制的手段; ✓ 看板 "…...
时间相减 示例kotlin LocalDateTime
时间相减 示例kotlin LocalDateTime fun test1(){val d1: LocalDateTime LocalDateTime.parse("2023-05-06 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))val d2: LocalDateTime LocalDateTime.parse("2023-05-07 15:12:00"…...
Boost开发指南-4.5swap
swap boost::swap是对标准库里的std::swap 的增强和泛化,为交换两个变量(可以是int等内置数据类型,或者是类实例、容器)的值提供了便捷的方法。 为了使用boost::swap,需要包含头文件<boost/swap.hpp>ÿ…...
OpenStack对接Ceph平台
OpenStack对接Ceph平台 目录 OpenStack对接Ceph平台 1、创建后端需要的存储池(ceph-01节点操作)2、创建后端用户 2.1 创建密钥(ceph-01节点操作) 2.1.1 创建用户client.cinder2.1.2 创建用户client.glance2.1.3 创建用户client.cinder-backup2.2 导出密钥(ceph-01节点操作)2.3 …...
【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件
目录 想实现切换不同列表展示不同数据方法一方法二,动态组件动态组件的父组件如何传的值动态组件的子组件如何接受传的值 认识keep-alive缓存组件的生命周期 异步组件,单独打包,实现webpack分包,如何对组件进行单独打包࿰…...
C++的IO流
目录 C语言的输入与输出 流是什么 CIO流 C标准IO流 C文件IO流 stringstream的简单介绍 在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做? 将数值类型数据格式化为字符串 字符串拼接 序列化和反序列化结构数据 注…...
nodejs+vue+elementui电影订票网站系统_wqc3k
电影订票系统在国内有很多值得借鉴的例子,功能也都趋于完善,因此此次电影订票系统将轻量化开发,要完成以下功能: (1)要支持完整的用户注册,登录功能,账号的管理通过管理员来实现。 &…...
2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数
一、linux 串口终端输入长命令不换行,覆盖前面内容,现象如下图: 二、解决方法:用stty 命令设置行列数 stty columns 200 stty rows 10三、参考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口设备操作命…...
根据指定日期获取周,月,季度,年的第一天和最后一天
1. 根据指定日期获取周,月,季度,年的第一天和最后一天 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 根据给定时间获取周、月度、季度、年度开始结束时间*…...
CRMEB商城系统:便捷、安全、多样化的购物方式
商城系统是当今社会商业发展的重要组成部分,它以数字化、网络化的方式提供商品和服务。商城系统通过互联网技术,将商品和消费者紧密连接,方便了购物的流程和效率。 商城系统的特点之一是无国界化。传统实体商店通常受限于地理位置和时间&…...
同步_异步请求和Ajax并利用axios框架简化
目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步和异步 同步请求:发送请求后,会做出回应,回应的内容会覆盖浏览器中的内容,这样会打断其他正常的操作,显得不太友好&#…...
取个对象值导致系统崩溃
取个对象值导致系统崩溃 前言 想必各位小伙经常在项目中遇到一些错误,取对象值的时候,经常报错,又或者某些项目突然就挂经常都是出现在一些对象取值上面,然后就被领导一顿训斥 报错分析 例如: 下面这个报错大家想必不会陌生&am…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
