windows下的一个C++ socket服务器
2015-04-22 09:32
316 查看
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。这样在使用时要格外的注意!!!
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
作者:magicsoar
出处:http://www.cnblogs.com/magicsoar/
#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。这样在使用时要格外的注意!!!
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
作者:magicsoar
出处:http://www.cnblogs.com/magicsoar/
相关文章推荐
- 一个简单的 websocket的 c++ 服务器 实现windows
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器
- windows下的C++ socket服务器(2)
- 轻松搭建一个Windows SVN服务器
- 在windows上新建一个ftp服务器
- windows下的C++ socket服务器(3)
- 轻松搭建一个Windows SVN服务器
- windows下的C++ socket服务器(4)
- Win7中如何在远程服务器的windows服务中启动一个软件进程
- 轻松搭建一个Windows SVN服务器
- 轻松搭建一个Windows SVN服务器
- 用Mcafee将Windows打造一个相对安全的服务器环境
- 轻松搭建一个Windows SVN服务器
- 【windows】 配置一个本地的tomcat服务器
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(无数截图)
- 轻松搭建一个Windows SVN服务器
- 搭建一个Windows SVN服务器
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器
- Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器
- windows下的C++ socket服务器(1)