やあみんな、私は、私は再びあなたの助けが必要だと思う:(パイソン - ソケット通信、複数のメッセージ
私はどこにでも見てきたが、私はまだ答えを見つけることができ、このソケット通信にこだわっている
。問題:それは私にエラーを与えるか、スクリプトを終了どちらかの前に、私は唯一のクライアントから1つのメッセージを送ることができ を、私は、サーバーに複数のメッセージを送信できるようにする必要があり
サーバ側(図示。下記のとおりです):
# Echo server program
import socket
import time
import os
#-----------------------------------------------------------------------------------------------------------------------
today = time.strftime('%Y.%m.%d')
logFileName = "log - " + today + ".txt"
HOST = '10.0.0.16'
PORT = 8080 # Reserve a port for your service
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Create a socket object
s.bind((HOST, PORT)) # Bind to the port
def print_write(text):
log.write(time.strftime("%H:%M:%S") + " | " + text)
log.write("\n")
print text
#-----------------------------------------------------------------------------------------------------------------------
if os.path.isfile(logFileName) is True:
log = open(logFileName, 'a+')
print_write("[SERVER] Log for " + today + " already exists.")
print_write("[SERVER] Starting comms")
else:
print "[SERVER] Log doesn't exist"
log = open(logFileName, 'a+') # Create file -> log - %date%.txt
print_write("[SERVER] Log created")
while True:
s.listen(1)
conn, addr = s.accept()
data = conn.recv(BUFFER_SIZE)
if data == "Comms Shutdown":
print_write("------ REMOTE SHUTDOWN ------")
conn.close()
raise SystemExit
else:
print_write("[COMMS] " + str(addr) + " says: " + data)
log.close()
申し訳ありません非常に混乱して混乱していますが、私はこのプロジェクトを終了する時間があまりありません。
私はここにあまりなく、を持っていないクライアント側では、私はあなたにこれをあげる:
import socket
HOST = '10.0.0.16' # The remote host
PORT = 8080 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
msg = raw_input()
s.sendall(msg)
print msg
私はそれが動作しません知っている、それはあなたに私が必要なもののアイデアを与えることです。
ありがとうございます。
サーバコードはrecvを1回だけ呼び出す前に再度呼び出します。新しい接続を開く前に 'recv'を何度か呼び出すためにwhileループなどを使用する必要があります。 – noteness