Python套接字:同时发送和接收三个多消息

时间:2016-05-04 13:44:07

标签: python python-2.7 sockets python-3.x networking

我正在开发一个项目,将一些数据从服务器发送到客户端,如名称,年龄和国家/地区,作为从服务器发送给客户端的消息。

我使用python和socket lib创建了这段代码,但我想知道有没有更好的方法以相同的顺序获取消息?

例如我发送“第一条消息”,然后发送“第二条消息”,然后发送“第三条消息”,所以输出应该是相同的顺序:“第一条消息”,然后是“第二条消息”,然后是“第三条消息”

这是我的代码:

发送

import socket

UDP_IP = "127.0.0.1"
UDP_PORT = 5005
MESSAGE = "Hello, World!"
MESSAGE2 = "Hello, world2"
MESSAGE3 = "Hello, world3"

print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE.encode(), (UDP_IP, UDP_PORT))
sock.sendto(MESSAGE2.encode(), (UDP_IP, UDP_PORT))
sock.sendto(MESSAGE3.encode(), (UDP_IP, UDP_PORT))

接收

import socket

UDP_IP = "127.0.0.1"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, # Internet
                    socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print "received message:", data
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print "received message:2", data
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    print "received message:3", data

1 个答案:

答案 0 :(得分:0)

而不是使用udp,而是使用tcp,它将确保消息按顺序排列