C++入门到放弃(一),第一个服务器

前言

很多大学生学完C语言后就不知所措。不知道接下来可以学什么。《Unix环境高级编程》《Unix网络编程》等书籍虽然经典,但对于不少的同学来说都比较的枯燥,写这系列的文章讲述自己学C编程的经历吧。

第一个服务器程序HelloWorld

功能:

服务器启动后,每有一个新的链接进来,服务器都输出“HelloWorld”。

结果:

当有一个连接进来的时候,服务器输出Hello World.



我们通过netstat -apn | grep 8098 (我指定的端口可以看到链接的详情) 这里ESTABLISHED表示已经建立连接。这个与TCP状态有关,后面我们再进一步来讲解TCP的状态,这一部分的确比较枯燥无味。


代码:

我向来认为,对于新手来说,最好的方式莫过于看着代码进行讲解了。我们来看一下代码。

  • 7-13行,这边是socket函数的一个wrapper,我们只是包裹了socket方法而已,socket(int domain, int type, int protocol) 这是一个生成一个socket的一个函数,里面的三个参数一般是一个组合。我们可以通过man socket进行了解。在第45行,我们申请了一个TCP,IPv4的Socket。
  • 15-21行,bind函数,当我们用socket函数申请一个socket后,他并没有赋值给一个本地的地址,低48-52行我们将本地8098端口绑定该socket。
  • 23-29行,listen函数,使用listen的socket将会等待Accept连接。
  • 31-37行,accept函数,当我们调用accept函数时,程序将被阻塞,系统会返回等待列表中的第一个给我们。
    这个之间我们可能带着诸多疑问,例如各个常量与参数,但我认为,对于新手来说,可能很多的细节问题可以等待后面进一步了解。

状态图

运行与测试

环境:ubuntu14.10
编译:g++ -g server.cpp
我们用telnet模拟客户端连接,后面我们会继续写客户端。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容