Linux下的TCP通信

2014-11-24 12:31:35 · 作者: · 浏览: 3

本文绝大部分是参考《Linux程序设计(第4版)》的第15章套接字



服务器端的步骤如下:


1. socket: 建立一个socket


2. bind: 将这个socket绑定在某个文件上(AF_UNIX)或某个端口上(AF_INET),我们会分别介绍这两种。


3. listen: 开始监听


4. accept: 如果监听到客户端连接,则调用accept接收这个连接并同时新建一个socket来和客户进行通信


5. read/write:读取或发送数据到客户端


6. close: 通信完成后关闭socket




客户端的步骤如下:


1. socket: 建立一个socket


2. connect: 主动连接服务器端的某个文件(AF_UNIX)或某个端口(AF_INET)



3. read/write:如果服务器同意连接(accept),则读取或发送数据到服务器端


4. close: 通信完成后关闭socket





上面是整个流程,我们先给出一个例子,具体分析会在之后给出。例子实现的功能是客户端发送一个字符到服务器,服务器将这个字符+1后送回客户端,客户端再把它打印出来


Makefile:




tcp_server.c:




tcp_client.c:





如果我们首先运行tcp_client,会提示没有这个文件:




因为我们是以AF_UNIX方式进行通信的,这种方式是通过文件来将服务器和客户端连接起来的,因此我们应该先运行tcp_server,创建这个文件,默认情况下,这个文件会创建在当前目录下,并且第一个s表示它是一个socket文件





程序运行的结果如下图: