Форум программистов, компьютерный форум CyberForum.ru

Python: Сети

Войти
Регистрация
Восстановить пароль
 
AvisMortes
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 14
#1

Отправка сообщений всем подключенным клиентам - Python

24.04.2016, 20:37. Просмотров 535. Ответов 3

Как реализовать отправку всех сообщений которые поступили на сервер, всем клиентам(потокам)?
Пытался реализовать внутри класса ClientThread отправкой через self.conn.send(), но он отправляет только одному объекту класса

Код клиента:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import socket
 
clntsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clntsock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
 
    
def connect():
    clntsock.connect(('localhost',9090))
    data = clntsock.recv(1024)
    udata = data.decode('utf-8')
    print(udata)
    while True:
        out = input('Mess: ')
        b_out = out.encode('utf-8')
        clntsock.send(b_out)
 
 
if __name__ == '__main__':
    connect()
Код сервера:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import socket
import threading
 
servsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
servsock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
servsock.bind(('localhost',9090))
servsock.listen(True)
 
welcome = b'Welcome from new chat'
 
def main():
    while True:
        conn,addr = servsock.accept()
        ClientThread(conn,addr).start()
 
 
class ClientThread(threading.Thread):
 
    def __init__(self,conn,addr):
        self.conn = conn
        self.addr = addr
        threading.Thread.__init__(self)
 
    def run(self):
        try:
            self.conn.send(welcome)
            print(self.addr , ' "Подключился"')
            while True:
                data = self.conn.recv(1024)
                udata = data.decode('utf-8')
                print(udata)
        except ConnectionResetError:
             self.conn.close()
             print(self.addr , ' "Соединение разорванно"')
 
if __name__ == '__main__':
    main()
    servsock.close()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2016, 20:37     Отправка сообщений всем подключенным клиентам
Посмотрите здесь:

Отправка сообщений всем клиентам - Java Сети
Здравствуйте. Создал многопоточный сервер, но никак не могу разобраться с тем, чтобы сервер отправлял сообщение всем клиентам а не только...

Сокеты. Отправка сообщений всем клиентам или только одному - C#
Здравствуйте, имеется вот такой сервер на C#: using System; using System.Collections.Generic; using System.Linq; using System.Text;...

Передача сообщения всем подключенным клиентам - Java EE
есть класс сервера package simplenetserver; /* * To change this template, choose Tools | Templates * and open the template...

разослать сообщения всем подключенным клиентам - Unity, Unity3D
может быть пишу не в нужный раздел, но более подходящего не нашёл, если не туда написал, перенесите тему в нужный раздел проблема...

PHP Sockets отсылка сообщений всем клиентам - PHP Сети
Недавно начал изучать PHP и пишу игру. Клиент на flash сервер на PHP. К серверу подключаются несколько клиентов и на сервере я сохраняю их...

Отправка сообщения всем клиентам - Java Сети
Пишу (пробую) чат на сокетах. Клиент на андроиде. И не могу уже день разобратся с проблемой отправки сообщения всем клиентам. Я пробовал...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex925
2450 / 2116 / 498
Регистрация: 19.03.2012
Сообщений: 8,197
24.04.2016, 21:54     Отправка сообщений всем подключенным клиентам #2

Не по теме:

очень плохая идея использовать потоки для таких вещей



Если хочешь решить все правильно, то можешь посмотреть видео с докладом http://pythonz.net/videos/44/#fromrss
AvisMortes
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 14
24.04.2016, 22:15  [ТС]     Отправка сообщений всем подключенным клиентам #3
Обязательно посмотрю, спасибо за ссылку, но все же есть ли возможность сделать это с потоками?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2016, 22:21     Отправка сообщений всем подключенным клиентам
Еще ссылки по теме:

Server 2012 Отправка сообщений всем пользователям, и ОТКЛЮЧЕННЫМ в том числе - Windows Server
Необходимо отправлять сообщение на терминальном сервере ВСЕМ пользователям. Команда msg * "Текст сообщения" отправляет только активным...

Рассылка текста всем клиентам - Visual Basic .NET
Всем привет. Нужна помощь: Требуется разослать текст от сервера всем клиентам. Dim IP As IPAddress Dim Port As...

Как отправить данные всем клиентам - C#
Есть сервер static void Main(string args) { TcpListener server = null; try { ...

Как вывести всем клиентам сообщение? - Java Сети
Есть класс который создает сервер package server; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;...

.NET 3.x Необходимо отправить массив байтов всем подключенным клиентом, но они все на разных потках - C#
Всем привет. Столкнулся с проблемой, мне необходимо отправить переменную player.position всем клиентам, но они находятся в разных потоках....

Многопоточный сервер TCP: разослать сообщения по всем клиентам - C#
Есть tcp сервер, который принимает данные от клиентов и выводит в консоль, и дает ответ клиенту. Уже сутки не могу решить одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alex925
2450 / 2116 / 498
Регистрация: 19.03.2012
Сообщений: 8,197
24.04.2016, 22:21     Отправка сообщений всем подключенным клиентам #4
Возможно, но производительность такого сервера оочень быстро начнет проседать. Посмотри видео, там все с примерами объясняется и разбирается на сколько я помню прям твой случай.
Yandex
Объявления
24.04.2016, 22:21     Отправка сообщений всем подключенным клиентам
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru