Уведомления

Группа в Telegram: @pythonsu

#1 Март 26, 2013 18:23:55

kalashret
Зарегистрирован: 2013-03-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

клиент сервер

Нужно написать сервер, который будет принимать пост-запросы. Нужно использовать json.
Вопрос- не могу Понять какую библиотеку использовать, если нужно без сокетов, и как будет все происходить?

Офлайн

#2 Март 26, 2013 20:20:12

kalashret
Зарегистрирован: 2013-03-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

клиент сервер

я только начал изучение питона, поэтому прошу простить, что спрашиваю простые и понятные всем вещи.
я понимаю, что все происходит так:
1.клиент отправляет POSTом JSON-данные
2. Сервер чем-то(не через сокет-соединение) принимает запрос
3. декодит, парсит и JSON-данные кудато выводятся(это будет отдельная тема)

Офлайн

#3 Март 26, 2013 22:38:44

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

клиент сервер

Как это не через сокет-соединение?
Не очень понял, что надо, если есть возможность использовать веб-сервер, то просто напишите веб-сервис в виде сайта.

Офлайн

#4 Март 27, 2013 10:07:11

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

клиент сервер

Просто json или json-rpc?
Посмотрите на Twisted или Tornado

Офлайн

#5 Март 29, 2013 22:43:44

kalashret
Зарегистрирован: 2013-03-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

клиент сервер

Пытаюсь написать самую простую пару клиент - сервер
вроде все верно, но не получается

import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = 8007
s.connect((host, port))
s.send('hello')  
data = s.recv(1000000) 
print 'received', data, len(data), 'bytes'
s.close()
но получаю такую ошибку

Traceback (most recent call last):
File “C:\WebServers\Serv\Client\client.py”, line 6, in <module>
s.connect((host, port))
File “C:\Python27\lib\socket.py”, line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: ╧юфъы■ўхэшх эх єёЄрэютыхэю,

сервер

import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = 8007
s.bind((host), (port))
s.listen(1)
conn, addr = s.accept()
data = conn.recv(1000000)
print 'client is at', addr , data
conn.send(data)
z = raw_input()
conn.close()

получаю

Traceback (most recent call last):
File “C:\WebServers\Serv\Server\server.py”, line 6, in <module>
s.bind((host), (port))
File “C:\Python27\lib\socket.py”, line 224, in meth
return getattr(self._sock,name)(*args)
TypeError: bind() takes exactly one argument (2 given)

Офлайн

#6 Март 30, 2013 09:00:25

kalashret
Зарегистрирован: 2013-03-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

клиент сервер

вопрос снят, прописал вместо localhost 127.0.0.1, заключил в двойные скобки и все заработало.
Изучаем далее

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version