Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 1, 2011 12:37:09

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

Чат на python и PHP (сокеты)

Здравствуйте!

Ради интереса решил попробовать написать браузерный чат на python и php, думаю правильно будет использовать сокеты, сервер на python, клиент на php, С сокетами никогда не работал начал с простого:

сервер:

import socket
import time

# config
config = {
'host':'192.168.0.101',
'port':50007,
'listen':10
}
# end config


print '>>> [%s] Start chat server (host: %s, port: %s)' % (
time.strftime('%H:%M:%S'), config['host'], config['port']
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((config['host'], config['port']))
s.listen(config['listen'])
conn, addr = s.accept()

print '>>> Connected by', addr

while True:
data = conn.recv(1024)
if data: print data
Клиент:

import socket

HOST = '192.168.0.101' # The remote host
PORT = 50007 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

while True:
msg = raw_input('>')
if len(msg): s.send(msg)
else: break
s.close()
Подскажите как сделать чтобы сервер мог работать с несколькими клиентами, а не с одним как сейчас ?



Отредактировано (Авг. 1, 2011 12:50:23)

Офлайн

#2 Авг. 1, 2011 13:09:49

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

Чат на python и PHP (сокеты)

andreiru
Если сервер на никсах - можете попробовать применить select/poll/epoll http://habrahabr.ru/blogs/python/121103/ . А вообще, в каких целях пишете? И чем вам не нравится связка SocketIO + Tornadio + Tornado? И вопрос дня - какой к чертям PHP на клиенте и нафига он вообще нужен?



Отредактировано (Авг. 1, 2011 13:10:16)

Офлайн

#3 Авг. 1, 2011 14:46:40

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

Чат на python и PHP (сокеты)

Enchantner
Пишу просто так, чтобы узнать как это работает
Про SocketIO и Tornadio первый раз слышу (

PHP действительно не нужен, оказывается в JS тоже есть сокеты, нашёл тут неплохую статью, попробую по ней разобраться



Отредактировано (Авг. 1, 2011 14:47:16)

Офлайн

#4 Авг. 1, 2011 15:22:12

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

Чат на python и PHP (сокеты)

Да, эту статью как раз и хотел порекомендовать.

andreiru
оказывается в JS тоже есть сокеты
В JS нету сокетов. Есть не до конца утвержденная спецификация WebSockets, которую поддерживает на данный момент практически только хром. Просто их работу можно, например, эмулировать в “браузерах” потипу IE с помощью флеша, что вроде как и делает SocketIO.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version