socket通信在linux环境下在C上面执行,需要修改较多东西。
1、#include <winsock2.h> 头文件在windows环境下是加载socket的必要文件,在linux下要替换成#include <sys/socket.h>
2、加载lib的步骤不需要了 #pragma comment(lib,“ws2_32.lib”)去掉
3、不需要初始化WSA
4、创建套接字的关键字SOCKET替换成int INVALID_SOCKET替换成-1
5、绑定ip和端口这一步中,sockaddr_in在windows环境下创建变量绑定端口,在linux下使用struct sockaddr_in创建
在windows下设置完地址和端口号后设置:sin.sin_addr.S_un.S_addr = INADDR_ANY; 在linux下需要改为:sin.sin_addr.s_addr = htonl(INADDR_ANY);
在bind函数中进行绑定,LPSOCKADDR需要替换为struct sockaddr *, SOCKET_ERROR替换为-1
6、接收数据操作 SOCKET替换为int sockaddr_in 替换为 struct sockaddr_in,定义sockaddr_in变量大小的int型需要改为socklen_t
在accept函数中SOCKADDR *替换为struct sockaddr * , INVALID_SOCKET替换为_SC_PII_SOCKET
7、关闭套接字closesocket()替换为close() , 不需要WSACleanup()