Python3 & 基于TCP的方式实现客户端与服务器端互发消息
2021-02-01 本文已影响0人
乘风破浪的姐姐
客户端
'''
1、导⼊ socket 模块
2、创建socket 套接字
3、建⽴tcp连接(和服务端建⽴连接)
4、开始发送数据(到服务端)
5、接收服务端发送的信息
6、关闭套接字
'''
# 1、导⼊ socket 模块
from socket import *
# 2、创建socket 套接字
tcp_socket_client = socket(AF_INET,SOCK_STREAM)
# 3、建⽴tcp连接(和服务端建⽴连接)
tcp_socket_client.connect(("192.168.100.117",8787))
while True:
#键盘输入要发送的内容
msg = input("请输入要发送的内容:").strip()
#判断发送的内容是否为空,为空则跳过
if len(msg)==0:
continue
# 判断发送的内容是否为EXIT,是则退出客户端
elif msg == 'exit':
break
else:
# 4、发送数据(到服务端)
tcp_socket_client.sendall(msg.encode("gbk"))
# 5、接收服务端发送的信息
recv_data = tcp_socket_client.recv(1024).decode("gbk")
print("收到服务端回复:%s" % recv_data)
# 6、关闭套接字
tcp_socket_client.close()
服务器:
'''
1. 导⼊ socket 模块
2 socket创建⼀个套接字
3. bind绑定ip和port
4. listen使套接字变为可以被动链接
5. accept等待客户端的链接
6. recv/send接收发送数据
7. 发送数据到客户端
8. 中止与当前客户端的连接
9. 关闭服务端套接字
'''
# 1. 导⼊ socket 模块
from socket import *
# 2. socket创建⼀个套接字
tcp_socket_server = socket(AF_INET,SOCK_STREAM)
# 3. bind绑定ip和port
tcp_socket_server.bind(('',8787))
# 4. listen使套接字变为可以被动链接
tcp_socket_server.listen(128)
# 循环目的:调用多次accept,从而为多个客户端服务
while True:
# 5. accept等待客户端的链接
socket_client,ip_port = tcp_socket_server.accept()
print("新的客户端来了:", ip_port)
# 循环目的: 为同一个客户端 服务多次
while True:
# 6. recv接收客户端发送的数据
recv_data = socket_client.recv(1024)
#判断接收到客户端的信息是否为空,为空则退出
if not recv_data:
print("客户端连接断开")
break
else:
print("收到客户端信息:%s" % recv_data.decode("gbk"))
#从键盘输入回复给客户端的内容
msg = input("请输入回复内容:").strip()
# 判断发送的内容是否为空,为空则跳过
if len(msg)==0:
continue
# 7. 发送数据到客户端
socket_client.sendall(msg.encode("gbk"))
# 8. 中止与当前客户端的连接
socket_client.close()
# 9. 关闭服务端套接字
tcp_socket_server.close()
image.png
image.png