使用python实现tcp通信
TCP协议使服务器和客户端通过socket进行通信
服务器端通信流程如下:
1.使用socket类创建一个套接字对象
2.使用bind(ip,port)方法绑定IP地址和端口号
3.使用listen()方法开始TCP监听
4.使用accept0方法等待客户端的连接
5.使用recv0/send0方法接收/发送数据
6.使用close0关闭套接字
以下是代码:
from socket import socket, AF_INET, SOCK_STREAM
# AF_INET 用于Internet之间的进程通信
# SOCK_STREAM 表示的是用TCP协议编程
# (1)创建socket对象
server_socket = socket(AF_INET, SOCK_STREAM)
# (2)绑定IP地址和端口号
ip = '127.0.0.1'
port = 8888
server_socket.bind((ip, port))
# (3)开始监听
server_socket.listen(5)
print("服务已启动")
# (4)等待客户端连接
client_socket, client_addr = server_socket.accept()
# (5)接收来自客户端的数据
data = client_socket.recv(1024)
print('客户端发送的数据是:', data.decode('utf-8')) # decode解码
# (6)关闭连接
client_socket.close()
客户端通信方式如下:
1.使用socket类创建一个套接字对象
2.使用connect(host,port)设置连接的主机lP和主机设置的端口号
3.使用recv()/send()方法接收/发送数据
4.使用close()关闭套接字
以下是代码
import socket
from encodings.utf_8 import encode
# (1)创建客户端socket对象
client_socket = socket.socket()
# (2)向目标服务器发送请求
client_socket.connect(('127.0.0.1', 8888))
# (3)发送数据
client_socket.send('welcome back '.encode('utf-8'))
# (4)关闭连接
client_socket.close()
print('发送完毕')
当然也可以实现多次通信
服务器端
import socket
# 模块名.类名
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8888))
server.listen(5)
print("服务器已启动")
client_socket, client_add = server.accept()
# 接收来自客户端的数据
info = client_socket.recv(1024).decode('utf-8') # while循环的4步骤 info初始化
while info != 'bye': # 条件判断
if info != '':
print("收到数据:", info)
data = input("发送数据:")
client_socket.send(data.encode('utf-8'))
if data == 'bye':
break # 循环
info = client_socket.recv(1024).decode('utf-8') # 改变变量,避免死循环
# 关闭socket对象
server.close()
client_socket.close()
客户端
import socket
cli = socket.socket()
cli.connect(('127.0.0.1', 8888))
print('建立连接')
info = ''
while info != 'bye':
send_data = input("客户端要发送:")
cli.send(send_data.encode('utf-8'))
if send_data == 'bye':
break
info = cli.recv(1024).decode('utf-8')
print("收到服务器的数据:", info)
cli.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)