Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » передача элементов списка и их отображение [RSS Feed]

#1 Фев. 13, 2011 15:48:37

pihto
От:
Зарегистрирован: 2009-11-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

передача элементов списка и их отображение

клиент сервер приложение которое во всех подключившихся к серверу клиентах отображает список ип которые подключены к серверу
все вродебы нормально… сервер при подключении нового клиента отдаёт ему список всех ИП а старым клиентам добавляет в список ИП нового только что подключившегося клиента.. проблема в том что при подключении 3го клиента список ИП отображается не встолбик как надо а както криво..
как вы можете заметить первые 2 отображают все отлично.. а с третего начинается кривизна.. почему?


сервер

import socket, threading
users = []
socks = []
class MyThread(threading.Thread):
def __init__(self, sock, addr):
self.sock = sock
self.addr = addr
threading.Thread.__init__(self)
def run ( self ):
print users
for i in users: #новому клиенту отдаём список всех подключенных ИП
self.sock.send(str(i))
for i in socks:
if i!=self.sock: #старым - отдаём ИП последнего подключившегося клиента
i.send(str(users[len(users)-1]))
while 1:
f = self.sock.recv(1024)
for i in socks:
i.send(f)
self.sock.close()
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind(("127.0.0.1", 7500))
srv.listen(5)
while 1:
sock, addr = srv.accept()
users.append(addr)
socks.append(sock)
MyThread(sock,addr).start()
клиент
import socket, threading
from Tkinter import *

class MyThread1(threading.Thread):
def __init__(self, sock):
self.sock = sock
threading.Thread.__init__(self)
def run (self):
while 1:
listbox.insert(END, self.sock.recv(1024))
self.sock.close()

master = Tk()

listbox = Listbox(master)
listbox.pack()

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1",7500))
MyThread1(sock).start()

mainloop()



Отредактировано (Фев. 13, 2011 15:50:03)

Офлайн

#2 Фев. 13, 2011 16:57:08

pihto
От:
Зарегистрирован: 2009-11-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

передача элементов списка и их отображение

все понял.. в сервере self.sock.send(str(i)) отправляет данные не зависимо от того принял клиен или нет.. и если клиент не успел то сервер лепит 2 ипа в 1 месадж… time.sleep(1)



Офлайн

  • Начало
  • » Network
  • » передача элементов списка и их отображение[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version