Найти - Пользователи
Полная версия: передача элементов списка и их отображение
Начало » Network » передача элементов списка и их отображение
1
pihto
клиент сервер приложение которое во всех подключившихся к серверу клиентах отображает список ип которые подключены к серверу
все вродебы нормально… сервер при подключении нового клиента отдаёт ему список всех ИП а старым клиентам добавляет в список ИП нового только что подключившегося клиента.. проблема в том что при подключении 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()
pihto
все понял.. в сервере self.sock.send(str(i)) отправляет данные не зависимо от того принял клиен или нет.. и если клиент не успел то сервер лепит 2 ипа в 1 месадж… time.sleep(1)
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