【从零学习python 】77. TCP服务端编程及注意事项

简介: 【从零学习python 】77. TCP服务端编程及注意事项

TCP服务端

在程序中,如果想要完成一个TCP服务器的功能,需要按照以下流程进行操作:

  1. 创建套接字socket
  2. 绑定(IP和端口)
  3. 监听使套接字变为可被动连接
  4. 等待客户端的连接请求accept
  5. 接收/发送数据
  6. 关闭套接字

示例代码

from socket import *
# 创建socket
tcp_server_socket = socket(AF_INET, SOCK_STREAM)
# 本地信息
address = ('', 7788)
# 绑定
tcp_server_socket.bind(address)
# 使用socket创建的套接字默认是主动的,使用listen将其变为被动的,这样就可以接收其他客户端的连接了
tcp_server_socket.listen(128)
# 如果有新的客户端来连接服务器,则产生一个新的套接字专门为这个客户端服务
# client_socket用来为这个客户端提供服务,而tcp_server_socket则可以继续等待其他新客户端的连接
client_socket, client_addr = tcp_server_socket.accept()
# 接收对方发送过来的数据
recv_data = client_socket.recv(1024)  # 接收1024个字节
print('接收到的数据为:', recv_data.decode('gbk'))
# 发送一些数据到客户端
client_socket.send("thank you !".encode('gbk'))
# 关闭为这个客户端服务的套接字,只要关闭了,就不能再为这个客户端服务
# 如果还需要服务,只能重新连接
client_socket.close()

TCP注意事项

  • TCP服务器一般需要进行绑定,否则客户端无法找到该服务器。
  • TCP客户端一般不需要绑定,因为它是主动连接服务器的,只要确定了服务器的IP和端口等信息即可,而本地客户端可以随机选择。
  • TCP服务器通过listen可以将socket创建出来的主动套接字变为被动套接字,这是编写TCP服务器时必须的操作。
  • 当客户端需要连接服务器时,需要使用connect进行连接。与UDP不同,TCP必须先建立连接才能通信。
  • 当一个TCP客户端连接到服务器时,服务器端会创建一个新的套接字,用于标识该客户端,并为该客户端提供服务。
  • listen之后的套接字是被动套接字,用于接受新客户端的连接请求,而accept返回的新套接字则用于标识这个新客户端。
  • 关闭listen之后的套接字意味着被动套接字关闭了,此时新的客户端将无法连接到服务器,但之前已经连接成功的客户端依然可以正常通信。
  • 关闭accept返回的套接字意味着该客户端已经完成服务。
  • 当客户端的套接字调用close后,服务器端的recv方法将解阻塞,并返回长度为0的数据,因此服务器可以通过返回的数据长度来区分客户端是否已经下线。
相关文章
|
4天前
|
数据挖掘 索引 Python
Python数据挖掘编程基础3
字典在数学上是一个映射,类似列表但使用自定义键而非数字索引,键在整个字典中必须唯一。可以通过直接赋值、`dict`函数或`dict.fromkeys`创建字典,并通过键访问元素。集合是一种不重复且无序的数据结构,可通过花括号或`set`函数创建,支持并集、交集、差集和对称差集等运算。
14 9
|
4天前
|
前端开发 Python
Python编程的面向对象(二)—类的多态
Python编程的面向对象(二)—类的多态
12 7
|
3天前
|
存储 开发者 Python
探索Python编程的奥秘
【9月更文挑战第29天】本文将带你走进Python的世界,通过深入浅出的方式,解析Python编程的基本概念和核心特性。我们将一起探讨变量、数据类型、控制结构、函数等基础知识,并通过实际代码示例,让你更好地理解和掌握Python编程。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到新的启示和收获。让我们一起探索Python编程的奥秘,开启编程之旅吧!
|
4天前
|
人工智能 小程序 API
文字转语音神器+Python编程搞定语音报时小程序
文字转语音神器+Python编程搞定语音报时小程序
11 2
|
4天前
|
Python
Python编程的循环结构小示例(二)
Python编程的循环结构小示例(二)
|
5天前
|
人工智能 数据挖掘 开发者
Python编程:从基础到进阶
【8月更文挑战第59天】本文将带你进入Python的世界,从基础语法到进阶技巧,让你轻松掌握Python编程。我们将通过实例讲解,让你在实际操作中提升技能。无论你是初学者还是有一定基础的开发者,都能在本文中找到适合自己的学习内容。让我们一起探索Python的魅力吧!
|
5天前
|
存储 设计模式 算法
Python编程练习小结
Python编程练习小结
10 1
|
5天前
|
人工智能 小程序 API
ChatTTS+Python编程搞定语音报时小程序
ChatTTS+Python编程搞定语音报时小程序
|
5天前
|
开发者 索引 Python
7个提升python编程的小技巧
7个提升python编程的小技巧
18 0
7个提升python编程的小技巧
|
4天前
|
算法 Python
Python编程的函数—内置函数
Python编程的函数—内置函数
下一篇
无影云桌面