Найти - Пользователи
Полная версия: сетевое программирование
Начало » Network » сетевое программирование
1
pochechyev
есть сервер:
import socket


s=socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
s.bind(("localhost", 8080))
s.listen(1)

while 1:
print "waiting connection ..."
conn, addr=s.accept()
print "Connected" , addr
data=""
while 1:
req=conn.recv(1024)
if not req:
break
data+=req
conn.send("OK")
conn.close()
print data
и к нему клиент
import socket

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 8080))
s.send("some data")
data=""
while 1:
req=s.recv(1)
if not req:
break
s.close()
когда запускается клиент, то он виснет и скорее всего ждет данные, при этом сервер не выполняет break и не передохит с получения на отправку данных.


вчера целый вечер бился - не могу понять в чем проблема.


спасибо
k0sh
Условие “if not req:” произойдет только в случае обрыва соединения, а до тех пор оба (клиент, сервер) будут ждать данных.
pochechyev
k0sh
Условие “if not req:” произойдет только в случае обрыва соединения, а до тех пор оба (клиент, сервер) будут ждать данных.
а как правильно осуществить подобную передачу данных?
k0sh
Определиться с протоколом обмена, например если сервер/клиент получает магическую команду (например “BYE”) завершать сессию.
pochechyev
можете подсказать пример хорошего, понятного кода? желательно ссылку :)
спасибо
o7412369815963
попробуй вместо s.bind((“localhost”, 8080)), написать s.bind((“”, 8080))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB