Найти - Пользователи
Полная версия: Сервер-клиент посредник
Начало » Python для новичков » Сервер-клиент посредник
1 2 3 4 5
shiza
Lam
трейс и так полный
Не вижу в нем стека вызова и на какие строчки он ссылается.
shiza
в общем - у меня на локальной машине - такой вариант работает полностью:
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
http://rastaman.tales.ru/?page=3&menu1=7&smenu1=1&menu2=21&inctext=0 демоны мать их ну ниче ща их того и снова прогу писать кста с наступающим вас всех, вы ведь тут не только програмите)
Ferroman
Да забаньте вы наконец этого придурка.
ZZZ
Lam, тебе уже несколько раз намекнули на то, что здесь люди более менее грамотные и, соответственно, не любят коверконье языка. Пойми, твой слог действительно тяжело читается… И, спрашивается, почему мы должны тратить своё мозговое время на то, чтобы разбирать то что ты написал?

Так что либо оставь такой слог для удаффа с башоргом, либо, прости за грубость, катись от сюда к чёртовой бабушке!

P.S. Ferroman, ещё +1. Я как раз думал, что бы такого написать… :-)
P.P.S. Сходил я по этой ссылке… Lam, не в тему здесь это, ибо здесь работают. Юмор мы все любим, но в тему и в специально отведённых для этого местах, потому что отвлекает.
Lam
shiza спасибо, но у меня почему то и этот вариант не хочет работать, печатает цифру 1, и чего то ждет…
ZZZ, ferroman расслабтесь, отвлекаю от работы, правильно решение даже такой нелепой задачи как написание такой программы какая нужна мне, требует хоть какого то внимания а значит отвлечение от работы, а раз вы всё равно отвлеклись дак не всё ли равно куда вы отвлеклись, а что не понятно, ну некоторые всё же понимают, а если чего то совсем не понятно заходим в гугль ищем а потом спрашиваем если не нашли, мне же тоже много чего непонятно но я почему то должен прочитать pep8, “это” и делать как сказано там, а именно постораться самостоятельно найти ответ не нашел спрашивать, короче задача на сколько я знаю довольно простая, то что вы её можете решить это для меня уже сомнение, зато вы очень трепетно к правилам относитесь, такое впечатление что них не знаете просто собрались и правила дружно не нарушаем… Хотя да эт наверно просто я чего опять через голова делаю, лан спасибо досвидание, большое спасибо, очень помогли…
shiza
%)
Lam
Мож тему перенести в раздел мобильный питон?
ZZZ
Shiza, я пробежался по твоему коду… А с какого перепоя ты решил, что размер пакета всегда кратен 1024-ём байтам (.recv(1024))? Ведь если это не так, то он будет до позеленения ждать, пока не наберётся необходимое число данных.

Лам, не хорошо огрызаться, когда приходишь в новое общество и тебе указывают на то, как в нём принято себя вести.
Lam
Мож тему перенести в раздел мобильный питон?
Возможно. Но в данном случае проблема укладывается в общие рамки с поправками вроде отсутствия socket.socket.settimout.
Lam
Да согласен не хорошо я прост человек такой не хороший) да я такой и че идем на уступки я читаю стараюсь выполнять ваши правила, да не се сразу москва не рим не сразу появилась)… Насчет кода, ну лан у него не кратен 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. к оформлению кода просьба не придираться, просто на теле оно так луче выглядит легче понимать…
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