将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

将windows上socket的client程序修改到linux上运行的更多相关文章

  1. Windows编写的shell脚本,在linux上无法执行

    前两天由于要查一个数据库的binlog日志,经常用命令写比较麻烦,想着写一个简单的脚本,自动去刷一下数据库的binlog日志,就直接在windows上面写了,然后拷贝到linux中去运行,其实很简单的 ...

  2. Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll

    最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...

  3. JAVA的DES加密解密在windows上测试一切正常,在linux上异常

    windows上加解密正常,linux上加密正常,解密时发生 如下异常,异常信息如下: [ERROR] 2018-10-15 09:30:35,998 method:com.iscas.ippc.co ...

  4. windows下写的shell脚本到linux上不能运行

    win上是dos模式,需要改成unix模式 方法是: 在linux上vim 打开脚本,然后:set ff=unix

  5. Hadoop概念学习系列之搭建(windows)Eclipse/MyEclipse远程操作(Linux上)hadoop2.2.0/hadoop2.6.0 出错集(三十五)

    本博文,是在http://blog.csdn.net/u010911997/article/details/44099165  的基础上.感谢原博主! 问题1:在DFS Lcation 上不能多文件进 ...

  6. 史上最详细最全的Linux上安装Oracle的教程-centos7

    一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root #切换到root Password: [root@localhos ...

  7. windows本地eclispe运行linux上hadoop的maperduce程序

    继续上一篇博文:hadoop集群的搭建 1.将linux节点上的hadoop安装包从linux上下载下来(你也可以从网上直接下载压缩包,解压后放到自己电脑上) 我的地址是: 2.配置环境变量: HAD ...

  8. Gradle在Windows环境与Linux上配置有哪些不同?

    我的开发环境:Windows + Android Studio + Gradle 2.8 all + Jenkins 公司CI 服务器环境: Linux + Gradle 2.10 bin + Jen ...

  9. 解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题

    总结/朱季谦 楼主最近在做公司的工作流平台,发现一个很无语的事情,Activiti5.22的流程图在Windows环境上部署,是可以正常查看的,但发布到公司的Linux服务器上后,在上面进行流程图在线 ...

  10. Linux上的SQL Server的起步

    我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾 ...

随机推荐

  1. vue中父传子props的使用

    第一种 传递一个数组 props:["cont"] 第二种 传递一个对象 props:{ uploadOption:{ type:Object, 参数类型必须是一个对象 requi ...

  2. 【小实验】golang的if比较中的string/[]byte转换会被编译器优化

    之前做了实验,[]byte类型使用string()进行转换的时候,会产生拷贝.see: [小测试]golang中使用string()来转换[]byte数组产生了拷贝 不过今天又有了新的认识.请先看下面 ...

  3. C# 使用RabbitMQ消息队列

    参考文章 https://www.cnblogs.com/kiba/p/11703073.html和https://www.cnblogs.com/longlongogo/p/6489574.html ...

  4. 基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学

    基于知识图谱的<红楼梦>人物关系可视化及问答系统(含码源):命名实体识别.关系识别.LTP简单教学 文件树: app.py是整个系统的主入口 templates文件夹是HTML的页面 |- ...

  5. 【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!

    相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五]gym搭建自 ...

  6. 8.1 TEB与PEB概述

    在开始使用TEB/PEB获取进程或线程ID之前,我想有必要解释一下这两个名词,PEB指的是进程环境块(Process Environment Block),用于存储进程状态信息和进程所需的各种数据.每 ...

  7. Win32汇编:仿写多态与虚函数

    多态性是面向对象的重要组成部分,利用多态可以设计和实现易于扩展的程序,所谓多态就是一个类函数有多重形态,具有不同功能的函数可以用同一个函数名,实现使用一个函数名调用不同内容的函数,从而返回不同的结果, ...

  8. vue2-ace-editor代码编辑器使用

    安装 npm安装 npm install --save-dev vue2-ace-editor 如果需要拷贝到内网,需要 npm安装后 将 vue2-ace-editor 和 brace( vue2- ...

  9. 基于SLAM的规划算法仿真复现|SLAM|智能规划

    图片来自百度百科 前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https: ...

  10. 零基础入门学习JAVA课堂笔记 ——DAY08

    异常 1.什么是异常? Exception 异常是指程序在运行过程中出现的不期而至的各种状况 异常发生在程序运行期间,它影响了正常程序执行流程 通俗易懂的表达就是,程序在发生意料之外或者拿到的不是想要 ...