2012-04-04 2 views
4

СерверСервер Клиент связи Python

import socket 
import sys 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

host= 'VAC01.VACLab.com' 
port=int(2000) 
s.bind((host,port)) 
s.listen(1) 

conn,addr =s.accept() 

data=s.recv(100000) 

s.close 

КЛИЕНТ

import socket 
import sys 

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

host="VAC01.VACLab.com" 
port=int(2000) 
s.connect((host,port)) 
s.send(str.encode(sys.argv[1])) 

s.close() 

Я хочу, чтобы сервер для получения данных, которые клиент посылает.

я получаю следующую ошибку, когда я пытаюсь этот

Клиентская сторона

TraceBack (самый последний вызов последнего): Файл "Client.py", строка 21, в s.send (sys.argv [1]) TypeError: 'ул' не поддерживает интерфейс буфера

стороне сервера

Файл «Listener.py», строка 23, в data = s.recv (100000) socket.error: [Errno 10057] Запрос на отправку или получение данных был запрещен, но ause разъем не подключен и (при отправке по гнезду датаграммы с использованием вызова отправки ) адрес не был отправлен

+0

Думаю, вам, возможно, придется преобразовать 'str' в' bytes'. –

+0

Я делаю это str.encode (sys.argv [1]) ?? Я сделал это, ошибки были остановлены, но данные не передаются. –

+0

У вас все еще есть проблемы? –

ответ

8

На сервере используется приемник для приема данных. Он используется только для приема новых соединений.

изменения к этому:

conn,addr =s.accept() 

data=conn.recv(100000) # Read from newly accepted socket 

conn.close() 
s.close() 
+0

Все те же ошибки на стороне клиента. Ошибка сервера была решена. –

3

Ваша линия s.send ожидает получения объекта потока. Вы даете ему строку. Заверните строку с помощью BytesIO.

+0

Я делаю это str.encode (sys.argv [1]) ?? Я сделал это, ошибки были остановлены, но данные не передаются. –

+0

@VinodK NO использовать 'BytesIO'. Посмотрите, что в документах. – Marcin

0

Какая версия Python вы используете? Из сообщения об ошибке я предполагаю, что вы непреднамеренно используете Python3. Вы можете попробовать свою программу с Python2, и все должно быть хорошо.

+0

Я использую Python 3 –

+0

Vinod - попробуйте с Python2, чтобы узнать разницу. –

Смежные вопросы