Python网络编程-Socket简单通信
Posted yaoxing365
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python网络编程-Socket简单通信相关的知识,希望对你有一定的参考价值。
学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅。
先介绍下TCP的三次握手:
1,简单的发送消息:
服务器端:
import socket sk = socket.socket() ip_port = ("127.0.0.1", 8888) sk.bind(ip_port) sk.listen(5) print("正在进行等待接受数据...") conn, address = sk.accept() msg = "hello world!" conn.send(msg.encode()) conn.close()
客户端:
import socket client = socket.socket() ip_port = ("127.0.0.1", 8888) client.connect(ip_port) data = client.recv(1024) print(data.decode())
这里并不能连续发送消息,一次连接发送消息后程序终止。
2.1,连续的发送消息(TCP方式)
服务器端:
import socket import random sk = socket.socket() ip_port = ("127.0.0.1", 8888) sk.bind(ip_port) sk.listen(5) while True: print("正在进行等待接受数据...") conn, address = sk.accept() msg = "hello world!" conn.send(msg.encode()) while True: data=conn.recv(1024) print(data.decode()) if data==b‘exit‘: break conn.send(data) conn.send(str(random.randint(1,1000)).encode()) conn.close()
客户端:
import socket client = socket.socket() ip_port = ("127.0.0.1", 8888) client.connect(ip_port) while True: data = client.recv(1024) print(data.decode()) msg_input=input("please input mesage to send...") client.send(msg_input.encode()) if msg_input== b‘exit‘: break data = client.recv(1024) print(data.decode())
使用while函数,来连续的发送消息。
2.2,连续的发送消息(UDP方式)
服务器端:
import socket #定义udp方式 sk=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) ip_port=("127.0.0.1",8888) sk.bind(ip_port) while True: data=sk.recv(1024) print(data.decode())
客户端:
#udp import socket sk=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) ip_port=("127.0.0.1",8888) while True: msg_input=input("please input message to send...") if msg_input==b‘exit‘: break sk.sendto(msg_input.encode(),ip_port) sk.close()
3,多客户端发送消息(TCP方式)
服务器端:
#tcp import socketserver import random class MyServer(socketserver.BaseRequestHandler): def setup(self): pass def handle(self): conn=self.request msg="hello world!" conn.send(msg.encode()) while True: data= conn.recv(1024) print(data.decode()) if data== b‘exit‘: break conn.send(data) conn.send(str(random.randint(1,1000)).encode()) conn.close() def finish(self): pass if __name__=="__main__": server=socketserver.ThreadingTCPServer(("127.0.0.1",8888),MyServer) server.serve_forever()
客户端:
#tcp import socket client = socket.socket() ip_port = ("127.0.0.1", 8888) client.connect(ip_port) while True: data = client.recv(1024) print(data.decode()) msg_input=input("please input mesage to send...") client.send(msg_input.encode()) if msg_input== b‘exit‘: break data = client.recv(1024) print(data.decode())
启动服务器端后,服务器端等待客户端程序连接,我们可以启动多个客户端来连接服务器端。
注:内容来源于互联网
以上是关于Python网络编程-Socket简单通信的主要内容,如果未能解决你的问题,请参考以下文章
python,socket网络编程,最简单的server端和client端代码
游戏开发实战Unity使用Socket通信实现简单的多人聊天室(万字详解 | 网络 | TCP | 通信 | Mirror | Networking)
游戏开发实战Unity使用Socket通信实现简单的多人聊天室(万字详解 | 网络 | TCP | 通信 | Mirror | Networking)