windows下的C++ socket服务器(1)

2023-11-13

windows下的C++ socket服务器(1)

windows下的一个C++ socket服务器,用到了C++11的相关内容,现在还不是很完善,以后会不断改进的!

 

#include <winsock2.h>//1 以后会用这种方式对特定代码进行注释
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <thread>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")  //2

 

1. #include <winsock2.h>     大家会发现windows下有winsock.h和winsock2.h,winsock2.h是winsock.h的升级版,它设计的目的是替代winsock.h,而不是扩展它。在winsock.h中定义的所有内容在winsock2.h中也都定义了。winsock2.h定义了_WINSOCKAPI_,阻止编译器去处理后面的winsock.h,这样编译不会报错。但是如果winsock.h在winsock2.h前出现,winsock2.h就重新定义winsock.h已经定义的东西,导致编译报错。

 

比如

#include<winsock.h>

#include<winsock2.h>

//error winsock.h在winsock2.h前出现

 

#include<winsock2.h>

#include<winsock.h>

//正确 winsock2.h在winsock.h前出现

 

值得注意的是在windows.h中   旧的版本(我使用的是win7 vs2013)中自动包涵winsock.h,而在新的版本(win8?)中会自动包涵winsock2.h,

所以在某些版本中

#include<windows.h>

#include<winsock2.h>

//error windows.h中包含了winsock.h winsock.h在winsock2.h前出现

 

#include<winsock2.h>

#include<windows.h>

//正确

此外某些第三方的类库可能也包含了winsock.h,或者在自己的代码中既有winsock.h和winsock2.h。这样在使用时要格外的注意!!!

 

 

#pragma comment(lib,"ws2_32.lib") 如果没有添加这行代码的话,会出现很多和ws2def.h文件相关的错误

这是因为程序缺少相应的静态链接库,也可以手动添加:在项目上点右键->属性->配置属性->链接器->输入->附加依赖项加入ws2_32.lib(每次都要手动添加,不推荐)

 

#include <winsock.h> //包含winsock这个头文件,内容是网络编程socket相关部分API 
#pragma comment(lib,"Ws2_32.lib") //这是链接API相关连的Ws2_32.lib静态库

 

静态链接库lib和动态链接库dll的区别:

有兴趣的可以参看http://blog.sina.com.cn/s/blog_61ba4898010153zu.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下的C++ socket服务器(1) 的相关文章

  • 虚拟机Linux:ping不通外网,但是宿主机可以ping的通;ip、网关配置都没什么问题

    查看vi etc sysconfig network scripts ifcfg ens33的配置也没有什么问题 但是还是ping不通外网 所以我将拷贝自己没有问题的虚拟机 etc sysconfig network scripts ifc
  • 数据结构-用单链表实现集合的并运算和交运算

    问题描述 有A B两个集合 分别用两个单链表存放 假设集合中无重复的元素 要求编写两个独立的函数分别实现集合的并运算和交运算 运算结果存放在第3个链表中 运算不能改变原来的A B链表 假设单链表中的元素值均为正整数 建立链表时 输入 1时停
  • 解决有时候加载不出img标签图片

    在vue前端浏览器加载图片时 其他任何地方都能加载出 就唯独一个地方显示无法载入此图像 完全无法理解 解决方法是在在图片显示的界面把meta referrer标签改为never 或者在img标签上加上referrerpolicy no re
  • TFIDF算法Hadoop实现

    程序说明 利用MapReduce计算框架 计算一组英文文档中各个单词的TFIDF 某单词在某文档的TFIDF 该单词中该文档的TF 该单词IDF 其中 TF i j 单词i在文档j中出现的频率 Term Frequency TF i j N
  • MySQL之数据备份和恢复

    参考资料 关于备份的一些概念 http www open open com lib view open1382152331946 html 关于备份和数据恢复的简介 http wenku baidu com link url eVm3 9f
  • 初识C语言之数据类型,生命周期&作用域

    首先 C语言大致分为七种基础的数据类型 分别是char 字符数据类型 short 短整形 int 整形 long 长整形 long long 更长的整形 float 单精度浮点数 double 双精度浮点数 其中 char是描述字符的 sh
  • 金融行业的密钥及加密机制

    金融行业的密钥及加密机制 一 秘钥的标准体系 二 秘钥实现 三 常见术语 四 参考文档 一 秘钥的标准体系 目前金融行业的秘钥体系主要有两个 一是 Q CUP 006 4 2015 中国银联股份有限公司企业标准 中国银联银行卡交换系统技术规
  • PaddleOCR手写体训练摸索

    手写OCR识别 一 官方支持的数据格式 1 官方文档 1 1 PaddleOCR 支持两种数据格式 1 2 训练数据的默认存储路径 1 3 自定义数据集的准备 1 3 1 通用数据集 1 3 2 lmdb数据集 1 3 2 1 lmdb基本
  • LED为何通过电流控制?

    前段时间 散热部的同事咨询我关于手机的闪光灯输出电压值 说实话 一时间把我问住了 关于闪光灯 以往我们关注电流值 电压值很少关注 虽说手机的闪光灯驱动IC输出为BOOST电路 但是输出电压到多少 我还真未了解过 因闪光灯本身属于电流控制 所
  • 安装包制作工具 Inno Setup 6.0.2 汉化版-BY 胡萝卜周博客

    nno Setup 是一个免费的安装制作软件 小巧 简便 精美是其最大特点 支持pascal脚本 能快速制作出标准 Windows2000 风格的安装界面 足以完成一般安装任务 该软件用Delphi写成 其官方网站同时也提供源程序免费下载
  • mongdb 建立地图索引,删除,查询

    方式一 创建 db shop ensureIndex loc 2dsphere 2Dsphere索引 用于存储和查找球面上的点 db shop ensureIndex loc 2d 2D索引 用于存储和查找平面上的点 本人项目用的这种 查询
  • 阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题

    又是一年过去了 职场的积雪还没有消融 又迎来了一次大考 疫情还没完全过去 大家强打起精神 相互问好致意 眼角却满是疲惫 企业调薪 裁员 组织架构调整等等 坏消息只多不少 最近也有很多来咨询跳槽的朋友 都是因为之前的公司出现了比较大的薪资和组
  • tomcat中间件的默认端口号_tomcat默认端口号(三个tomcat端口号)

    tomcat默认端口号 三个tomcat端口号 2020 05 08 10 43 21 共10个回答 Tomcat的默认端口号是多少 您好 提问者 Tomcat的默认端口号是 8080 weblogic的默认端口号是 7001 tomcat
  • 【机器学习笔记1】一元线性回归模型及预测

    目录 什么是线性回归模型 一元线性回归模型 问题引入 问题解析 代价函数 损失函数 代价函数的图像 为什么不是最小而是极小值 梯度下降算法 梯度下降算法公式 对于一元线性回归模型 学习率a的选择 关于梯度下降每一步的变化 补充 代码部分 案
  • SpringBoot整合邮箱验证(典中典)

    大体思路 先生成一个六位随机验证码并存起来 调用邮箱接口发送验证码 将用户输入的验证码和之前保存的验证码进行比对 目录 大体思路 第一步 开启SMTP服务 简单邮件传输协议 第二步 在项目中导入相关依赖 第三步 在配置文件里进行相关配置 第
  • CVE-2022-30190 MSDT远程代码执行漏洞复现

    目录 0x01 声明 0x02 简介 0x03 漏洞概述 0x04 影响版本 0x05 环境搭建 0x06 漏洞复现 是否存在利用点 CMD执行 生成docx文件利用 0x07 CS上线 启动CS服务端 CS客户端连接 设置监听 生成攻击e
  • JAVA 关于static中静态代码块的使用

    与一般静态方法的比较 一般情况下 如果有些代码必须在项目启动的时候就执行的时候 需要使用静态代码块 这种代码是主动执行的 需要在项目启动的时候就初始化 两者的区别就是 静态代码块是自动执行的 静态方法是被调用的时候才执行的 静态方法可以用类

随机推荐

  • 【多线程】ThreadLocal

    目录 简介 底层 set get 回收 简介 线程变量 以ThreadLocal为键 任意对象为值的结构 这个结构被附带在线程上 一个线程根据一个ThreadLocal对象查询到绑定在这个线程上的一个值 本地线程 线程的局部变量 只有当前线
  • 学习少儿编程成为一种必然趋势

    AI人工智能和少儿编程一直是大家热议的话题 在政策引领下 一些城市把人工智能带入中小学教材当中 格物斯坦小坦克认为从编程思维入手 让孩子养成清晰明朗的逻辑思维 在学习 做事各个方面 孩子将来都会得心应手 Scratch编程与其他代码编程 最
  • DS静态查找之折半查找

    题目描述 给出一个队列和要查找的数值 找出数值在队列中的位置 队列位置从1开始 要求使用折半查找算法 输入 第一行输入n 表示队列有n个数据 第二行输入n个数据 都是正整数 用空格隔开 第三行输入t 表示有t个要查找的数值 第四行起 输入t
  • 抓包基本命令

    一 概述 在一个A应用程序内数据有不同的格式如 Integer String等 但是通过网络将数据传输给B应用程序 那么在到达B应用程序之前 数据都将统一解析成数据包 也就是二进制串在网络中传输 在B应用程序前布置一个 网 在这个数据包到达
  • Linux: USB Gadget 驱动简介

    文章目录 1 前言 2 背景 3 USB Gadget 驱动 3 1 什么是 USB Gadget 驱动 3 2 USB Gadget 驱动框架 3 3 USB 设备控制器 UDC 驱动 3 3 1 USB 设备控制器 UDC 驱动 概述
  • Eggjs 从放弃到开始使用

    原文 codesky me archives eg 用掘金刊登虽然分流了但是主要是 现在分享的曝光率实在太低了 所以 支持的请点下原博收藏下关注下以及我的微博 咦 这篇文章标题为什么反了 实际上这是个人走过的心路历程 最初看到 eggjs
  • FastDFS的Tracker及Storage节点添加及删除

    1 增加Storage节点 通过配置 自动加入 1 安装Storage并配置mod fastdfs conf及storage conf 设置fdfs storaged及nginx自启动 2 启动新加的storage节点 会自动同步相同gro
  • openGL之API学习(四)纹理操作

    纹理操作代码流程 向着色器传递纹理单元 glUniform1i gSampler 0 向GPU上传纹理数据 GLuint m textureObj glGenTextures 1 m textureObj 生成一个纹理对象 一个纹理对象有多
  • 谁会嫌钱多啊,最适合打工人小白的Python兼职攻略以及接私活经验!

    这次小编想谈谈一个非常热门的话题 就是如何在学习python的同时去赚钱 在这篇文章中 你会学习到如何通过学习python来赚取副业收入 相信大家都对钱感兴趣吧 如果你和马云爸爸对钱不敢兴趣的话 那这篇文章就不适合你了 如果你想知道如何使用
  • 计算机英语-基础知识

    计算机专业英语基础知识 1 专业英语的专业性和客观性 科技文章属于严肃的书面语体 崇尚严谨周密 逻辑性强 要求层次分明 重点突出 各个领域的专业英语都以表达科技概念 理论和事实为主要目的 因此 它们很注重客观事实和真相 要求逻辑性强 条理规
  • APISIX源码解析-插件-客户端IP【real-ip】

    real ip 客户端IP插件 关键属性 源码解析 real ip 插件用于动态改变传递到 APISIX 的客户端的 IP 和端口 local function get addr conf ctx if conf source http x
  • 卷运维不如卷网络安全

    最近发现很多从事运维的选择了辞职 重新规划自己的职业发展方向 运维工程师这个岗位在IT行业里面确实是处于最底层的 不管什么环节出现问题 基本都是运维背锅 背锅也就罢了 薪资水平也比不上别的岗位 一般运维的薪资水平大多数都是6 9K 还要高频
  • 【Rust】用RefCell避开`&mut XX`导致的借用检查

    derive Debug struct WhatAboutThis lt a gt name String nickname Option lt a str gt impl lt a gt WhatAboutThis lt a gt fn
  • 什么是本地储存?

    本地储存的作用 把一些数据记录在浏览器中 是浏览器提供给我们的一些本地存储数据的机制 localStorage 永久缓存 除非手动删除 sessionStorage 会话缓存 关闭浏览器就没有了 共同点 只能存储字符串格式的数据 local
  • 爬虫最快框架collyx,今天开源了...

    作者 TheWeiJun 工欲善其事 必先利其器 大家好 我是TheWeiJun 之前接触colly时 写过一篇关于colly框架的文章 由于当时能力有限加上时间不够充足 一直没能够去研究这个框架 后来经过3个多月的不断尝试完善 基于col
  • int类型数据相乘,溢出问题,负号变正号

    int相乘 不做强转的话 结果为int 溢出会出现结果不正确的情况 下面方法是个坑儿 如果要使用 需加强转 获取和日期间隔一定时间的时期 适合计算短时间间隔的情况 长时间间隔会出现溢出问题 影响正负号 方法待删除 param d1 para
  • UE4和C++ 开发-新手常用C++API

    C 暴露给蓝图可编辑 UCLASS Blueprintable 创建FString FString Printf TEXT aa bb 蓝图调用变量 UCLASS ClassGroup Custom meta BlueprintSpawna
  • Android使用Direct Textures提高glReadPixels、glTexImage2D性能

    from https www jianshu com p 1fa36461fc6f Android使用Direct Textures提高glReadPixels glTexImage2D性能 熊皮皮 关注 2017 02 05 15 52
  • weblogic双机(多机)集群搭建

    进去正题 1 创建集群 点击 锁定并编辑 选择 环境 gt 群集 gt 新建 gt 集群 填写 名称 选择 单点传送 点击 确定 集群创建完成 建议名称为 CLuster 项目名 一个项目配置一个集群环境 2 创建计算机 Machine 选
  • windows下的C++ socket服务器(1)

    windows下的C socket服务器 1 windows下的一个C socket服务器 用到了C 11的相关内容 现在还不是很完善 以后会不断改进的 include