将windows上socket的client程序修改到linux上运行

发布时间 2023-12-24 14:33:13作者: AndreaDO

将windows上客户端程序修改到linux上运行

记录一下修改哪些地方

编译命令

文件夹的内容:包含了client.cpp mySocket.cpp mySocket.h until.h
链接在一起

g++ -c client.cpp mySocket.cpp until.h -std=c++11 -pthread 

使用 g++ 编译器将 client.cpp、mySocket.cpp 和 until.h 编译为目标文件:
g++ -c client.cpp mySocket.cpp until.h
这将生成三个目标文件:client.o、mySocket.o 和 until.o。

使用 g++ 链接器将三个目标文件链接为一个可执行文件:

g++ client.o mySocket.o -o client

这将生成一个名为 client 的可执行文件。

修改内容

1.修改头文件处

// 修改win和linux不同的h文件
#ifdef _WIN32
	#include <winsock2.h>
	#include <Windows.h>
#else
	#include <unistd.h>
	#include  <arpa/inet.h>
	#include <string.h>
	#define SOCKET int
    #define INVALID_SOCKET	(SOCKET)(~0)
    #define SOCKET_ERROR	(-1)
#endif

2.修改ip地址

第一处

#ifdef _WIN32
  char ipaddr[] = "127.0.0.1";
#else
  char ipaddr[] ="192.168.18.1";//修改成为linux虚拟机对应的主机ip地址
#endif

第二处

//修改linux版本服务器地址
#ifdef _WIN32
  _sin.sin_addr.S_un.S_addr = inet_addr(ipaddr);
#else
  _sin.sin_addr.S_addr = inet_addr(ipaddr);	
#endif

3.修改WORD

第一处

#ifdef _WIN32
//在windows下调用资源库
  WORD ver = MAKEWORD(2, 2);
  WSADATA dat;
  WSAStartup(ver, &dat);
#endif 

第二处

#ifdef _WIN32
  WSACleanup();
#endif

第三处

#ifdef _WIN32
  closesocket(_sock);
  // 清除Windows socket环境
  WSACleanup();
#else
  close(_sock);
#endif

4.修改recv

 int recvLen = (int)recv(_cSock, recvBuff, sizeof(DataHeader), 0);

在此处添加int