我正在使用Python 3.3創建一個TCP客戶端和服務器,我對使用Python和套接字都很陌生。我的問題是,我需要能夠存儲通過連接傳遞的任何東西作爲一個單獨的變量,以寫入各種文件等。Python:跨TCP客戶端/服務器傳遞多個變量
我不確定如何做到這一點,因爲它似乎都是一個數據流我無法單獨存儲。下面是我最新的工作代碼,它所做的全部工作就是通過連接發送我需要的數據。我應該試圖將所有數據作爲列表發送並將其解構成單獨的變量嗎?我可以單獨訪問它們嗎?我還沒有弄清楚它們?我的方法都錯了嗎?
Server代碼:
import os
from socket import *
HOST = '' #We are the host
PORT = 29876
ADDR = (HOST, PORT)
BUFFSIZE = 4096
serv = socket(AF_INET,SOCK_STREAM)
serv.bind(ADDR,) #Create tuple with one element
serv.listen(5)
print ('listening...')
conn,addr = serv.accept()
print (conn,addr)
print ('...connected')
with open(os.path.expanduser("~/.ssh/id_rsa.pub")) as f:
key = f.read()
conn.sendall(key)
print(key)
while True:
data = conn.recv(BUFFSIZE)
print(data)
conn.close()
客戶端代碼:
from socket import *
import os
import socket
HOST = 'xxx.xxx.xxx.xxx'
PORT = 29876 #Must match server.py
ADDR = (HOST,PORT)
BUFFSIZE = 4096
cli = socket.socket(AF_INET, SOCK_STREAM)
cli.connect(ADDR,)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("gmail.com",80))
ip = ((s.getsockname()[0]))
ip = ip.encode('utf-8')
cli.send(ip)
while True:
data = cli.recv(BUFFSIZE)
print (data)
cli.close()
它*是*全部一個流。你將不得不以某種方式分離比特。有像ZeroMQ這樣的庫通過套接字發送單獨的消息 - 您可能想要查看該消息。 – 2013-02-08 17:22:43