shiza
Дек. 24, 2008 16:23:56
Lam
трейс и так полный
Не вижу в нем стека вызова и на какие строчки он ссылается.
shiza
Дек. 24, 2008 17:05:36
в общем - у меня на локальной машине - такой вариант работает полностью:
import select
import socket
host1 = '127.0.0.1'
host2 = 'login.icq.com'
port1 = 8766
k = 1
s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind((host1, port1))
s2.connect((host2, port1))
s1.listen(5)
conn, addr = s1.accept()
print s1
print conn
#64.12.161.153 5190
print 'klient connect'
list = [s2, conn]
while True:
s3, s4, s5 = select.select(list, [], [])
for i in s3:
if i == conn:
data = conn.recv(1024)
s2.send(data)
print '1 ', len(data)
elif i == s2:
data = s2.recv(1024)
conn.send(data)
print '2 ', len(data)
Правда скоро отваливается почему-то.
Лень разбираться - почему =)
Lam
Дек. 24, 2008 23:31:00
http://rastaman.tales.ru/?page=3&menu1=7&smenu1=1&menu2=21&inctext=0 демоны мать их ну ниче ща их того и снова прогу писать кста с наступающим вас всех, вы ведь тут не только програмите)
Ferroman
Дек. 25, 2008 00:23:53
Да забаньте вы наконец этого придурка.
ZZZ
Дек. 25, 2008 01:32:37
Lam, тебе уже несколько раз намекнули на то, что здесь люди более менее грамотные и, соответственно, не любят коверконье языка. Пойми, твой слог действительно тяжело читается… И, спрашивается, почему мы должны тратить своё мозговое время на то, чтобы разбирать то что ты написал?
Так что либо оставь такой слог для удаффа с башоргом, либо, прости за грубость, катись от сюда к чёртовой бабушке!
P.S. Ferroman, ещё +1. Я как раз думал, что бы такого написать… :-)
P.P.S. Сходил я по этой ссылке… Lam, не в тему здесь это, ибо здесь работают. Юмор мы все любим, но в тему и в специально отведённых для этого местах, потому что отвлекает.
Lam
Дек. 25, 2008 10:48:58
shiza спасибо, но у меня почему то и этот вариант не хочет работать, печатает цифру 1, и чего то ждет…
ZZZ, ferroman расслабтесь, отвлекаю от работы, правильно решение даже такой нелепой задачи как написание такой программы какая нужна мне, требует хоть какого то внимания а значит отвлечение от работы, а раз вы всё равно отвлеклись дак не всё ли равно куда вы отвлеклись, а что не понятно, ну некоторые всё же понимают, а если чего то совсем не понятно заходим в гугль ищем а потом спрашиваем если не нашли, мне же тоже много чего непонятно но я почему то должен прочитать pep8, “это” и делать как сказано там, а именно постораться самостоятельно найти ответ не нашел спрашивать, короче задача на сколько я знаю довольно простая, то что вы её можете решить это для меня уже сомнение, зато вы очень трепетно к правилам относитесь, такое впечатление что них не знаете просто собрались и правила дружно не нарушаем… Хотя да эт наверно просто я чего опять через голова делаю, лан спасибо досвидание, большое спасибо, очень помогли…
Lam
Дек. 25, 2008 21:53:50
Мож тему перенести в раздел мобильный питон?
ZZZ
Дек. 25, 2008 22:45:44
Shiza, я пробежался по твоему коду… А с какого перепоя ты решил, что размер пакета всегда кратен 1024-ём байтам (
.recv(1024))? Ведь если это не так, то он будет до позеленения ждать, пока не наберётся необходимое число данных.
Лам, не хорошо огрызаться, когда приходишь в новое общество и тебе указывают на то, как в нём принято себя вести.
Lam
Мож тему перенести в раздел мобильный питон?
Возможно. Но в данном случае проблема укладывается в общие рамки с поправками вроде отсутствия
socket.socket.settimout.
Lam
Дек. 25, 2008 23:19:46
Да согласен не хорошо я прост человек такой не хороший) да я такой и че идем на уступки я читаю стараюсь выполнять ваши правила, да не се сразу москва не рим не сразу появилась)… Насчет кода, ну лан у него не кратен 1024 я вобще сделал код следущим:
import socket, select
host1 = '127.0.0.1'
host2 = 'login.icq.com'
port1 = 8766
k, b = 1, 1
s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind((host1, port1))
s2.connect((host2, port1))
s1.listen(5)
conn, addr = s1.accept()
print 'klient connect'
def move(i, o):
try:
tmp = ''
while True:
tmp +=i.recv(b)
except socket.error:
o.send(tmp)
while k<20:
list1 = [conn, s2]
s3, s4, s5 = select.select(list1, [], [])
print 'select'
for i1 in s3:
print 'start'
if i1 == conn:
move(conn, s2)
print k
elif i1 == s2:
move(s2, conn)
print k, k
k +=1
ща кста гляну че получилось пока вроде отпустило, а то когда я пробовал мог и напутать)…
P.S. к оформлению кода просьба не придираться, просто на теле оно так луче выглядит легче понимать…