KellyDink
Дек. 3, 2011 17:31:47
у меня есть две программки - одна сервер, а вторая - клиент, я хочу чтобы от клиента сообщение передавалось сообщение серверу!
у меня первое сообщение передается( а вот на втором вылетает( подскажите пожалуйста, что я не так делаю?
собственно код клиента:
import socket
HOST = ‘127.0.0.1’
PORT = 50033
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
message = getMessage()
key = getKey()
data = getTranslatedMessage(message, key)
s.send(data)
print 'Send: ‘, data
data = s.recv(8192)
s.close()
print ’Received: ', data
первое сообщение идеально отправляется, а вот на втором выводит ошибку:
Traceback (most recent call last):
File “C:\Users\Katusha\Desktop\Kate\Kate\task3\easy_client.py”, line 50, in <module>
s.send(data)
error:
doza_and
Дек. 3, 2011 18:30:44
Надо попробовать вынести из цикла
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
KellyDink
Дек. 3, 2011 18:56:59
а это дело ъ на стороне клиента? или может на сервере что-то криво написано?
KellyDink
Дек. 3, 2011 18:59:44
при переносе тоже ошибка(причем теперь не отправляется ни одно сообщение
Traceback (most recent call last):
File “C:\Users\Katusha\Desktop\Kate\Kate\task3\easy_client.py”, line 44, in <module>
s.connect((HOST, PORT))
File “C:\Python27\lib\socket.py”, line 224, in meth
return getattr(self._sock,name)(*args)
File “C:\Python27\lib\socket.py”, line 170, in _dummy
raise error(EBADF, ‘Bad file descriptor’)
error: Bad file descriptor
а если перетащить за цикл с s.connect
то пишет -
Traceback (most recent call last):
File “C:\Users\Katusha\Desktop\Kate\Kate\task3\easy_client.py”, line 44, in <module>
s.connect((HOST, PORT))
File “C:\Python27\lib\socket.py”, line 224, in meth
return getattr(self._sock,name)(*args)
File “C:\Python27\lib\socket.py”, line 170, in _dummy
raise error(EBADF, ‘Bad file descriptor’)
error: Bad file descriptor
сообщение ввести предлагает( но увы оно даже не отсылается( а в моем варианте одно проходило идеально
py.user.next
Дек. 3, 2011 23:06:16
надо строки, создающие соединение, вынести из цикла
цикл сделать конечным
соединение в цикле не закрывать
KellyDink
Дек. 3, 2011 23:38:50
здорого =) работает! только у меня не получилось его сделать конечным, а вот с while 1 все заработало) спасибо! я все строки вносила и выносила из цикла - а тупо про закрытие сессии не подумала!
py.user.next
Дек. 5, 2011 01:18:48
while True - плохой стиль (бесконечная программа)
надо определить, когда она закончится, и написать соответствующее условие
например, посылает десять сообщений