Dev-C++是一个小巧开源的C/C++集成开发环境,对于大部分的Linux函数,都可以在引用头文件后直接调用,但开发socket网络程序却要多做一些工作。
添加 头文件不可以。
添加 #pragma comment(lib,“ws2_32.lib”) 仍然报错
学习自:http://blog.sina.com.cn/s/blog_62bed5da01013148.html
#include <winsock2.h>
2.在使用socket接口前需要调用WSAStarup函数进行Windows下网络接口的启动,代码示例如下:
WSADATA wsd;
if((status=WSAStartup(MAKEWORD(2,2),&wsd))!=0)
{
perror( "wsastartup()failed: ");
exit(1);
}
3.在程序退出前需要调用WSACleanup进行资源的清理,代码示例如下:
WSACleanup();
4.编译时必须链接winsock的库ws2_32,链接库的选项在:“工具->编译选项下”,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RBO5ZQN4-1660413503737)(http://s14.sinaimg.cn/bmiddle/62bed5dahbb853ba686bd&690)]
5. 最后编译链接后,程序即可正确执行。
说明:
WSAStarup,即WSA(Windows SocKNDs Asynchronous,Windows套接字异步)的启动命令。是Windows下的网络编程接口软件 Winsock1 或 Winsock2 里面的一个命令(Ps:Winsock 是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口)。
为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。
当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。
。