Python实现TCP服务器与客户端通信教程

版权申诉
0 下载量 172 浏览量 更新于2024-08-25 收藏 7KB DOCX 举报
"Python TCP服务器端与客户端的实现方法" 在Python中,TCP(传输控制协议)被广泛用于网络通信,因为它提供了可靠的、基于连接的数据传输。本篇文档详细介绍了如何使用Python标准库中的`socket`模块来创建TCP服务器端和客户端。下面将对这两个程序的实现进行详细说明。 首先,我们来看TCP服务器程序(tsTsen.py)。服务器端的主要任务是监听特定的端口,接收客户端的连接,并与之通信。 1. 导入必要的模块:`from socket import *` 和 `from time import ctime`。`socket`模块提供了创建和操作套接字的功能,而`ctime`用于获取当前时间。 2. 定义常量:`HOST='M'`通常表示任何可用的IP地址(在此案例中,应改为'0.0.0.0'以监听所有接口),`PORT=21567`为服务器监听的端口号,`BUFSIZ=1024`是每次读取或发送的数据缓冲区大小,`ADDR=(HOST, PORT)`存储了服务器的IP和端口。 3. 创建一个TCP套接字`tcpSerSock`,使用`socket(AF_INET, SOCK_STREAM)`,其中`AF_INET`表示IPv4,`SOCK_STREAM`表示TCP。 4. 使用`bind(ADDR)`将套接字绑定到指定的IP和端口。 5. 调用`listen(5)`,设置最大连接队列长度为5,这意味着服务器可以同时处理5个未完成的连接请求。 6. 主循环中,`tcpSerSock.accept()`会阻塞,直到有新的客户端连接。一旦连接建立,它返回一个新的套接字`tcpCliSock`以及客户端的地址`addr`。 7. 在客户端连接上,服务器进入一个内部循环,通过`recv(BUFSIZ)`接收客户端发送的数据。如果接收到的数据为空,表示客户端关闭了连接,退出循环。 8. 接收到数据后,服务器将其格式化并回送给客户端,格式化字符串`('[%s] %s' % (ctime(), data))`包含了当前时间戳和接收到的数据。 9. 最后,使用`tcpCliSock.close()`关闭与客户端的连接,`tcpSerSock.close()`关闭服务器套接字。 接下来是TCP客户端程序(tsTclnt.py): 1. 同样导入`socket`模块。 2. 定义客户端的主机`HOST='localhost'`和端口`PORT=21567`。 3. 创建TCP套接字`tcpCliSock`,并使用`connect(ADDR)`与服务器建立连接。 4. 内部循环中,客户端通过`raw_input("> ")`获取用户输入,当输入为空时退出循环。 5. 发送用户输入的数据到服务器,使用`tcpCliSock.send(data)`。 6. 使用`recv(BUFSIZ)`接收服务器返回的数据,如果没有数据,退出循环。 7. 打印接收到的数据,然后关闭与服务器的连接。 在实际运行中,首先要启动服务器程序,接着启动客户端程序。客户端可以多次连接服务器,发送数据并接收响应,直到客户端结束连接。 总结来说,Python的`socket`模块使得TCP服务器和客户端的实现变得简单,只需要理解基本的网络通信概念和`socket`API,就能构建起可靠的网络通信系统。通过这个实例,读者可以深入理解TCP连接的建立、数据交换以及连接关闭的过程。