Python 3.3を使用してTCPクライアントとサーバーを作成していますが、Pythonとソケットの両方を使用するのは初めてです。私の問題は、さまざまなファイルなどに書き込むために、接続を介して渡されたものを個別の変数として格納できる必要があることです。
すべてが個別に保存できない1つのデータストリームのように見えるため、これを行う方法がわかりません。以下は私の最新の動作コードであり、接続を介して必要なデータを送信するだけです。すべてのデータをリストとして送信し、それを個別の変数に分解しようとすべきですか?すでに個別にアクセスできますが、まだ理解していませんか?私のアプローチはすべて間違っていますか?
サーバーコード:
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()