与UDP不同,TCP是一个面向连接的协议。这意味着,在客户端和服务器能够开始互相发送数据之前,它们要先握手和创建一个TCP连接。连接建立之后,当有一方需要给另一方发送数据,它只需经套接字把数据丢个TCP连接,无需再为数据附上目的地地址。
1. 下面讨论一下TCP客户程序和服务程序的交互,
①客户程序具有发起接触的任务。而服务程序为了能够对接触做出反应,它必须先运行起来,并且具有一个欢迎套接字欢迎任意客户程序的接触。
②客户进程生成套接字,与服务进程进行三次握手后,服务进程生成一个新的连接套接字(这对客户程序和服务器程序是完全透明的),客户进程与服务器进程建立起一个TCP连接。
③双方通过这一个TCP连接发送和接受数据。
如图1所示。
2. 接下来使用简单的客户-服务器应用程序来展示TCP套接字编程:客户向服务器发送一行数据,服务器将其改为大写并返回客户。图2注重显示了客户和服务器的主要与套接字相关的活动:客户程序只需要知道服务程序的IP和欢迎套接字的端口号。而TCP连接的建立由运输层完成:
以下代码在python3中测试通过:
(1)客户程序
from socket import *
serve