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

前言

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

第一个服务器程序HelloWorld

功能:

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

结果:

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



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


代码:

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

C++入门到放弃(一),第一个服务器_第1张图片
C++入门到放弃(一),第一个服务器_第2张图片
  • 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函数时,程序将被阻塞,系统会返回等待列表中的第一个给我们。
    这个之间我们可能带着诸多疑问,例如各个常量与参数,但我认为,对于新手来说,可能很多的细节问题可以等待后面进一步了解。

状态图

C++入门到放弃(一),第一个服务器_第3张图片

运行与测试

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

你可能感兴趣的:(C++入门到放弃(一),第一个服务器)