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") //
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。这样在使用时要格外的注意!!!
2 #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
windows下的C++ socket服务器(1)的更多相关文章
- windows下的C++ socket服务器(2)
int main(int ac, char *av[]) { ); ) { exit(); } thread t; ) { int socket_fd = accept(tcp_socket, nul ...
- windows下的C++ socket服务器(3)
int make_server_socket(int port) { WSADATA inet_WsaData; WSAStartup(MAKEWORD(), &inet_WsaData); ...
- windows下的C++ socket服务器(4)
void handleAccept(int socket_fd) { ] = { '\0' }; string cmd; string filename; recv(socket_fd, buf, ) ...
- windows下运行的linux服务器批量管理工具(带UI界面)
产生背景: 由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINU ...
- syslog之三:建立Windows下面的syslog日志服务器
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
- Windows下搭建本地SVN服务器【转】
转自:http://www.linuxidc.com/Linux/2015-01/111563.htm 本文介绍Windows下搭建本地SVN服务器的方法,网上资料比较少也比较旧,大都介绍的是旧版本S ...
- Windows下IIS搭建Ftp服务器
第一步:启用Windows IIS Web服务器 1.1 控制面板中找到"程序"并打开 1.2 程序界面找到"启用或关闭Windows功能"并打开 1.3 上面 ...
- Windows下svn客户端和服务器的安装使用
svn,全称subversion, 是目前用的较多的开源的版本管理工具.相信有些经历的程序员应该都听说过它. 通常的svn服务器是搭建在Linux中,不过如果作为个人或者单个小组使用的话,就可以把sv ...
- Windows下搭建HTTP/HTTPS服务器及测试过程
1 安装Apache http://www.apachehaus.com/cgi-bin/download.plx 选择合适的版本下载 本次下载的是 Apache 2.4.x VC14 Apache版 ...
随机推荐
- 2017-2018-1 20155310 《信息安全系统设计基础》 实现mypwd
2017-2018-1 20155310 <信息安全系统设计基础> 实现mypwd 作业要求: 1.学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...
- c++ 文件位置相关操作
教学内容: l 文件定位操作 l fgetpos定位 l fsetpos设定位置 l 文件结束判断函数feof 一.文件定位操作 在C语言标准库里 获取文件位置的函数有ftell和fge ...
- 如何实现PyQt5与QML响应彼此发送的信号?
对于PyQt5+QML+Python3混合编程,如何实现PyQt5与QML响应彼此发送的信号,这是一个棘手的问题. 大抵有如下五种方式: (要运行下面五个例子,千万不能在eric6中运行,会报错.错误 ...
- Linux下多线程编程中信号量介绍及简单使用
在Linux中有两种方法用于处理线程同步:信号量和互斥量. 线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作.如果一个程序中有多个线程试图改变一个信号量的值,系统将保 ...
- 23-[模块]-logging
1.日志级别 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志 ...
- cogs1885 [WC2006]水管局长数据加强版
BZOJ卡不过灰常蛋疼(毕竟人蠢自带巨大常数 这和动态维护最小生成树很像,但加边变成了删边,似乎没法做了. 然后根据之前的套路离线做,删边变成加边,就可以做了orz 二分查找的:(慢 // It is ...
- 单元测试——隔离神器:mockito
mockito,一个让人着迷的单元测试隔离框架.对比了easymock,jmock,jmockito,最终选择了它. 为什么用他 接口语法简洁.自然.写起来像在说话,很舒服. 文档更完整.让学习曲线更 ...
- linux 查询管道过滤,带上标题字段
linux查询过滤, 带上标题字段例: 一个简单的查询 ps -e | grep httpd 上面经过grep 过滤后, 标题没了, 但是为了看上去更方便,有标题字段看起来更方便一些, 那么可以按下面 ...
- Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据
Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 unity unity Editor ScirptableObject Unity编辑器扩展 Chapt ...
- git push失败
不知道弄错了什么上传项目到github上失败 git commit的时候提示 On branch masternothing to commit, working tree clean git pus ...