4
Python socket如何实现服务端和客户端数据传输(TCP)
source link: https://www.huhexian.com/43881.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Python socket如何实现服务端和客户端数据传输(TCP)
2022-05-1809:48:37评论
这篇文章主要介绍了Python socket如何实现服务端和客户端数据传输(TCP),具有很好的参考价值,以下为个人经验,希望能给大家一个参考,也希望大家多多支持!
socket服务端和客户端数据传输(TCP)
服务器端:
- import socket
- #创建一个socket对象
- socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- host = "127.0.0.1"
- port = 9999
- #绑定地址
- socket_server.bind((host, port))
- #设置监听
- socket_server.listen(5)
- # socket_server.accept()返回一个元组, 元素1为客户端的socket对象, 元素2为客户端的地址(ip地址,端口号)
- client_socket, address = socket_server.accept()
- #while循环是为了让对话持续
- while True:
- #接收客户端的请求
- recvmsg = client_socket.recv(1024)
- #把接收到的数据进行解码
- strData = recvmsg.decode("utf-8")
- #设置退出条件
- if strData == 'q':
- break
- print("接收: %s" % strData)
- msg = input("发送: ")
- #发送数据,需要进行编码
- client_socket.send(msg.encode("utf-8"))
- #关闭服务器端
- socket_server.close()
- import socket
- #创建一个socket对象
- client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- host = "127.0.0.1"
- port = 9999
- #连接服务端
- client.connect((host, port))
- while True:
- send_msg = input("发送: ")
- #设置退出条件
- if send_msg == "q":
- break
- send_msg = send_msg
- #发送数据,编码
- client.send(send_msg.encode("utf-8"))
- #接收服务端返回的数据
- msg = client.recv(1024)
- print("接收:%s", % msg.decode("utf-8"))
- #关闭客户端
- client.close()
流程图
socket服务端,客户端互相通信利用socket传递参数,把运行的程序与客户端结合,先启动服务端,再启动客户端。基础代码如下:
服务端代码
- import socket
- import time
- print("服务端开启")
- #创建套接字
- mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- #设置IP和端口
- #host = socket.gethostname()
- host = '127.0.1.1'
- port = 3333
- #bind绑定该端口
- mySocket.bind((host, port))
- mySocket.listen(10)
- while True:
- #接收客户端连接
- print("等待连接....")
- client, address = mySocket.accept()
- print("新连接")
- print("IP is %s" % address[0])
- print("port is %d\n" % address[1])
- while True:
- #发送消息
- msg = input("服务端发送:")
- client.send(msg.encode(encoding='utf-8'))
- print("发送完成")
- print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))#格式化时间戳为标准格式
- if msg == "EOF":
- break
- if msg == "quit":
- client.close()
- mySocket.close()
- print("程序结束\n")
- exit()
- #读取消息
- msg = client.recv(1024)
- print("服务端接收:",msg.decode("utf-8"))#把接收到的数据进行解码
- print("读取完成")
- if msg == b"EOF":
- break
- if msg == b"quit":
- client.close()
- mySocket.close()
- print("程序结束\n")
- exit()
客户端代码:
- import socket
- print("客户端开启")
- #创建套接字
- mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- #设置ip和端口
- #host = socket.gethostname()
- host = '127.0.1.1'
- port = 3333
- mySocket.connect((host, port)) ##连接到服务器
- print("连接到服务器")
- except : ##连接不成功,运行最初的ip
- print ('连接不成功')
- while 1:
- #接收消息
- msg = mySocket.recv(1024)
- print("客户端接收:%s" % msg.decode("utf-8"))#把接收到的数据进行解码
- print("读取完成")
- if msg == b"EOF":
- break
- if msg == b"quit":
- mySocket.close()
- print("程序结束\n")
- exit()
- #发送消息
- msg = input("客户端发送:")
- mySocket.send(msg.encode(encoding='utf-8'))
- print("发送完成")
- if msg == "EOF":
- break
- if msg == "quit":
- mySocket.close()
- print("程序结束\n")
- exit()
- print("程序结束\n")
历史上的今天
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK