Эй, ребята, я думаю, что нужно еще раз ваша помощь :(Python - сокеты, несколько сообщений
Я застрял на этом сокетов, я посмотрел везде, но я не нашел ответа еще
.ПРОБЛЕМА:. Я могу только отправить 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 один раз перед повторным циклом, вы должны использовать цикл while или что-то подобное, чтобы вызвать 'recv' несколько раз, прежде чем открывать новое соединение. – noteness