4、socketAPI

 在windows上和linux上实现基础socket()

1、建立基础的socket网络工程。

vs2017 ----》 创建新的解决方案,helloSocket --- >空项目(利于跨平台)

2、#include<windows.h> 与#include<winSock2.h>这两个头文件存在宏定义的冲突,

有两种解决办法:

1)#include<winSock2.h>放在#include<windows.h>之前。交换二者顺序(不推荐) 

 

2)在他们之前加上一个宏定义:#define WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

#include<winSock2.h>

#include<windows.h>

 

3)socket所需要的的基础工程:

 

WSAStartup,即WSAWindows异步套接字)的启动命令。是Windows下的网络编程接口软件Winsock1 或 Winsock2 里面的一个命令。WSAStartup必须是应用程序或DLL调用的第一个Windows Sockets函数。它允许应用程序或DLL指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节。应用程序或DLL只能在一次成功的WSAStartup()调用之后才能调用进一步的Windows Sockets API函数。

为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。

int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData );

⑴ wVersionRequested:一个WORD(双字节)型数值,在最高版本的Windows Sockets支持调用者使用,高阶字节指定小版本(修订本)号,低位字节指定主版本号。

⑵lpWSAData 指向WSADATA数据结构的指针,用来接收Windows Sockets [1]  实现的细节

WindowsSockets API提供的调用方可使用的最高版本号。高位字节指出副版本(修正)号,低位字节指明主版本号。

 

 缺少静态库文件:ws2_32.lib

 

3、windows添加静态库解决上述问题。

#pragma comment(lib,"ws2_32.lib")   // 者只在widows下支持,跨不了平台。

 

或者在工程配置中添加。

 这种方法跨平台。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值