Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2013 07:53:26

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

сокеты клиент-сервер

Приветствую коллеги!
Я только начал изучать питон (вообще пишу на сишнике), времени нет разбираться, поэтому прошу помощи в вас, не работает клиент-серверное приложение, в силу того что с типами данных на питоне я не плотно знаком ошибку не могу исправить:
Traceback (most recent call last):
File “C:\Python33\client.py”, line 7, in <module>
sock.send(string.ascii_letters(“polindrom”))
TypeError: ‘str’ object is not callable

#server
import socket
hst = "127.0.0.1"
port = 333
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((hst, port))
while 1:
print ("port" + str(port))
sock.listen(1)
client, addr = sock.accept()
while 1:
print("connect from: " + str(addr))
buff = client.recv(1024)
if not buff:
break
print ("data is: %s %s", addr, buff)
sock.close()

#client
import socket,string

HOST = "127.0.0.1"
PORT = 333
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send(string.ascii_letters("polindrom"))

sock.close()
print ("end: s")
Соединение проходит, но дальше сервак висит пока аварийно не завершить клиент….
В чем проблема?
Спс!
ЗЫ на string.ascii_letters(“polindrom”) не обращайте внимания я тут эксперементировал, и пытался передать строковые типы т.к. ругается именно на эту строку: TypeError: ‘str’ object is not callable

Отредактировано kocmoc (Март 7, 2013 08:01:14)

Офлайн

#2 Март 7, 2013 08:23:35

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

сокеты клиент-сервер

Если что то тебе прямо говорят что ты хочеш строку использовать как функцию. Вроде

b = "str"
b()
Попробуй выполнить этот код, ошибка будет таже.

Офлайн

#3 Март 7, 2013 09:04:37

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

сокеты клиент-сервер

Singularity
Если что то тебе прямо говорят что ты хочеш строку использовать как функцию. Вроде
ЫЫ спасибо, а я то думал при чем тут: строковый объект не может вызываться
тогда такая ошибка:
    sock.send("polindrom")
TypeError: 'str' does not support the buffer interface

Офлайн

#4 Март 7, 2013 12:08:43

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

сокеты клиент-сервер

Спс за внимание, с одним покончил, если кому интересно проблема была в типе данных, дело в том что send принимает массив байтов, а я передавал строку(хотя это тоже массив байт правда типы разные, вот такой вот каламбур ), надо так:

 sock.send(b"polindrom")
Кстати если ли в питоне что то подобное switch?

Отредактировано kocmoc (Март 7, 2013 12:11:56)

Офлайн

#5 Март 8, 2013 01:39:17

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

сокеты клиент-сервер

Кстати если ли в питоне что то подобное switch?
Только elif



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version