1
我不知道如何區分服務器端收到的數據。Python如何區分python socket模塊中的數據(服務器收到時)。
我想通過在發送數據或接收數據時設置MessageID(示例名稱)來區分數據。
這裏的例子:
服務器
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host=''
port=int(input(Please Enter the port:))
s.bind((host,port))
s.listen(1)
conn, addr = s.accept()
print('Someone connected.He :%s'%addr)
while True:
data=conn.recv(1024,MessageID) # I want to make this.
print(data)
客戶
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host=''
port=int(input(Please Enter the port:))
s.connect((host,port))
data='hello world'
data=data.encode('utf-8') # I encoded data because Python 3.3.3's socket module doesn't
work with string(str) when I send data.
s.send(data,MessageID) # This is what I want.I want to set messageID which can distinguish data.
如何做出這個樣子?
其他程序員如何區分python中的數據?
我真的想要的是:如果不是messageID,不要收到服務器要的信息。
1.接受 - >的recv 2.'conn.recv(1024)'可能返回少於1024字節(部分消息)。你需要一個循環來讀取整個消息。 3.關於「if not data」:[「recv返回0字節時,表示另一端已關閉(或正在關閉)連接,您將不會再收到有關此連接的更多數據。您可能能夠成功發送數據「](http://docs.python.org/dev/howto/sockets.html) – jfs
我真正想要的是:如果不是messageID,則不會收到服務器需要的。 – user3312583
@ user3312583如果messageid不匹配,您唯一的選擇是丟棄服務器發送的數據。在接收數據之前,您無法知道數據是什麼。 – msvalkon