网络编程初探 (1):预备工作

总体目标

通过使用c/c++进行网络编程,达到以下目标:

  • 提高c/c++的熟练度
  • 掌握网络编程的基本方法
  • 熟悉Linux操作系统
  • 熟悉一些软件管理/组织的方法

参考书籍/网站

  • c/c++编程
    《c++ primer 第5版》:c++入门经典。
    《Effective c++》:c++实践中的高效做法。
    《Head First 设计模式》:面向对象编程思想和常见设计模式的原理与思路。
  • 网络编程初步
    《TCP/IP详解:卷1》:协议篇,介绍了网络基础知识和概念,重点学习IP,TCP和UDP。
    《UNIX网络编程:卷1》:介绍了socket API的使用,以及一些基本的网络编程方法,模型。这次初步学习网络编程主要参考这本书。
  • Linux熟悉与使用
    《鸟哥的Linux私房菜:基础篇》:主要是Linux的介绍和使用,不涉及内核或原理,帮助快速入门Linux命令界面。
    《深入理解计算机系统》:涵盖计算机系统中主要概念和原理,对理解计算机系统有很大帮助。
  • 软件管理/组织
    git:git是用于版本控制或进行合作开发的软件
    Github/Coding:Github是目前比较流行的代码托管平台,Coding与Github类似,两个平台都使用git作为版本控制工具。Github在国内的访问不太稳定,所以先使用Coding,之后再上传到Github。
    CMake:当前最流行的项目配置工具,可对一套源代码,以指定结构生成针对不同平台/编译器的工程文件。在编写跨平台程序时很有用。

环境搭建

原本想在Linux使用vim和一些插件来搭建编程环境,但是相对于使用visual studio而言还是不太方便。所以最后决定主要还是在visual studio中编程,一些小的修改在vim中进行,对于两种系统socket API中有差异的地方利用系统宏定义来统一接口,然后用CMake配置工程(这样的代码还可以编译出Windows下的网络程序),用git同步代码。

服务器

服务器用了阿里云的学生优惠机,60元6个月(非广告)。相比于使用虚拟机,我觉得还是用服务器实战更好一些。按照官网步骤,最后在浏览器登录终端(提示符我已经修改过):

从浏览器登录终端

服务器上需要安装的软件有c++编译器(gcc/clang),git,cmake,tree(用来以树形结构展示目录)。在Ubuntu使用apt-get安装以上软件,很方便,基本上一条命令搞定。可以参考《鸟哥的Linux私房菜:基础篇》以及求助搜索引擎。安装失败的时候留意提示信息,比如阿里云服务器在使用apt-get时先要有一个更新的过程,根据提示就可以搞定了。

开发环境

在Windows下安装Visual Studio进行开发。此外还需要安装CMakegit,以及注册Github/Coding帐号。

第一个项目

创建一个Hello World项目来测试整个环境。

  • 首先在Coding上创建项目

    这里写图片描述

    其中添加的.gitignore文件是用来控制git在上传时要忽略哪些文件,例如vs的大量工程文件是不需要上传的,我们只需要同步代码即可。

  • 将项目下载到本地

    在任意文件夹下右键启动git bash,输入:git clone [你的项目地址],将项目克隆到本地。

  • 组织项目并上传

    在本地项目目录下新建main.cpp和CMakeLists.txt文件。并编写内容:

    // main.cpp
    
    
    #include <iostream>
    
    
    int main()
    {
        std::cout<<"Hello World"<<std::endl;
        return 0;
    }
    
    # CMakeLists.txt。 推荐使用notepad++编辑,还会有提示。CMakeLists中'#'为注释 
    
    
    # 项目名称
    
    project(hello)
    
    # CMake 最低版本号
    
    cmake_minimum_required(VERSION 2.8)
    
    # 设置可执行文件生成路径。'.'表示当前目录,即构建工程的目录。
    
    set(EXECUTABLE_OUTPUT_PATH .)
    
    # 查找当前目录下的所有源文件,并将名称保存到 DIR_SRCS 变量
    
    aux_source_directory(. DIR_SRCS)
    
    # 通过这些源文件,指定生成目标 
    
    add_executable(hello ${DIR_SRCS})

    然后,在git bash中,上传这些修改内容。

  • 编译运行

    登录到阿里云终端,通过git clone项目到本地:

    这里写图片描述

    新建在项目目录下build目录,然后在该目录下执行cmake ..(因为CMakeLists.txt在build的上个目录中)。此时生成了工程文件以及makefile,再执行make命令,进行编译。编译后在build下生成了hello可执行文件,然后./hello运行,输出hello world。

    这里写图片描述

    上一步中忘记编写.gitignore,如果提交修改到Coding之前,需要在该文件中增加一行 “build/”,即忽视build目录下的文件。

    在Windows下也通过CMake生成vs的工程文件:

    这里写图片描述

    设置项目生成路径为build,然后在该目录下打开vs工程文件,编译运行即可:

    这里写图片描述

    之后的修改可以在vs中编写,然后git提交到代码库,然后在Linux中pull下最新代码,再编译即可。

总结

以上工作完成了基本的网络编程环境的搭建,有关CMakeLists.txt的更多用法,git的使用,之后有时间再进行总结。此外,在进行网络编程时,需要针对不同平台的一些差异,通过宏进行判断,统一出共同接口,才可以跨平台编程,这些工作在之后进行。

这是我的第一篇博客,只介绍了一些很简单的内容,但是居然花了2个多小时,可能是写有点繁琐,而且对写博客/使用Markdown不太熟练,之后会更注重效率,时间控制在1小时内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值