← 返回首页
Python3基础教程(七十二)
发表时间:2022-05-08 08:05:13
TCP

socket模块可以轻松实现tcp通信编程。

1.TCP编程

Socket表示“打开了一个网络链接或者一个服务”,由IP+port组成,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。

服务器和客户端tcp通信过程如下:

服务器:创建套接字->绑定服务器地址->监听连接->接受连接->数据接收/发送 客户端:创建套接字->连接服务器地址->数据接收/发送

2.实例

实现客户端与服务器聊天的TCP编程。

服务器

# -*- coding: utf-8 -*-
# @Time : 2022/5/8 8:52
# @File : tcp_server.py
# @Software : PyCharm


# 导入socket模块
import socket

from time import ctime
# 主机IP
host = '127.0.0.1'
# 端口
port = 8888
BUFSIZE = 4096
# 创建TCP/IP套接字
server = socket.socket()
# 绑定端口
server.bind((host, port))
# 设置最多连接数
server.listen(5)
print("服务器等待客户端连接...")
# 创建一个死循环
while True:
    client, addr = server.accept()  # 建立客户端连接
    print(addr)

    while 1:
        data = client.recv(BUFSIZE)
        print(data.decode())
        #如果客户端回复了bye则退出
        if data.startswith('bye'.encode()):
            break

        # 提示用户输入数据
        send_data = input('[Server]请输入要发送的数据:')
        buf = '[' + ctime() + ']' + send_data
        client.send(buf.encode())
        if send_data == 'bye':
            break
    client.close()

# 关闭服务器连接
server.close()

客户端

# -*- coding: utf-8 -*-
# @Time : 2022/5/8 8:53
# @File : tcp_client.py
# @Software : PyCharm
# 导入socket模块
import socket

# 创建套接字
s = socket.socket()
# IP
host = '127.0.0.1'
# 端口
port = 8888
BUFSIZE = 4096
# 主动初始化TCP服务器连接
s.connect((host, port))

while True:
    # 提示用户输入数据
    send_data = input('[Client]请输入要发送的数据:')
    # 发送TCP数据
    s.send(send_data.encode())
    if send_data == 'bye':
        break

    # 接受对方发送过来的数据,最大接受4096字节
    recvData = s.recv(BUFSIZE)
    print('接收到的数据为:', recvData.decode())

    if recvData.endswith('bye'.encode()) :
        break
# 关闭套接字
s.close()

先启动服务器再启动客户端,首先客户端输入聊天内容。

运行结果: