Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Создание чата( chat ) для локальной сети( lan ) [RSS Feed]

#1 Март 19, 2010 12:18:26

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

Оказывается все очень просто:

MYPORT = 50000


from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 0))
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
s.sendto('hello', ('<broadcast>', MYPORT))
Работать будет я так понимаю в одном сегменте сети?



Отредактировано (Март 19, 2010 12:23:09)

Офлайн

#2 Март 19, 2010 20:45:26

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

сеть одноранговая

Офлайн

#3 Март 20, 2010 07:45:01

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

sypper-pit
сеть одноранговая
ну да, в этом случае архитектура “сервер-клиент” и не нужна получается вовсе.
Да и за пределы роутера бродкаст может пройти, если там роутинг включит.



Офлайн

#4 Март 21, 2010 19:23:18

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

те кк я понял этот код делает , отправку сообщения… осталось только слушать порт

Офлайн

#5 Март 22, 2010 08:07:05

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

Предполагаю, что можно сделать чтоб отправлялось

s.sendto('<my_ip> <my_name>', ('<broadcast>', MYPORT))
а дальше прога отправляла на получателя.

Офлайн

#6 Март 22, 2010 10:25:46

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

sypper-pit
отправку сообщения… осталось только слушать порт
тот же самый код что и выше…
MYPORT = 50000
from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 0))
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
print s.recv(500)
для внутреннего чатика, можно сделать велосипед вида:
1. каждый клиент опрашивает сеть на предмет того кто с сети, другие клиенты отвечают свои имена.
2. При отправке сообщения кому либо, указываем, что отправляем пользователю “Маша” (согласно своему придуманному протоколу). “Маша” видит что сообщение предназначалось именно ей, и принимает, другие игнорируют.
как то так…



Отредактировано (Март 22, 2010 10:26:25)

Офлайн

#7 Март 22, 2010 13:34:05

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

Вот убивал бы тех кто бродкастит в сети. Ничего личного ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Март 22, 2010 16:04:26

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

igor.kaist
че та не работает, пример

Отредактировано (Март 22, 2010 16:04:40)

Офлайн

#9 Март 22, 2010 16:20:32

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

o7412369815963
igor.kaist
че та не работает, пример
разобрался, при отправке нужно указывать подсеть в которую пулять пакет “192.168.0.255”
и при приеме нужно указать порт в bind

ЗЫ: при отправке bind не нужен

Отредактировано (Март 22, 2010 16:21:41)

Офлайн

#10 Март 22, 2010 16:47:27

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Создание чата( chat ) для локальной сети( lan )

igor.kaist
насчёт придуманного протокола , можно еще и файлы тогда пробовать передавать. Только думаю тогда при передаче бруткастом файла , сеть будет пакетами изобиловать :) однако если это пробовать, еще в кеш скинуть :) можно по пробовать сделать что то вроде большего прокси.

Офлайн

  • Начало
  • » Network
  • » Создание чата( chat ) для локальной сети( lan )[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version