socket data sending problem

O

ollietempleman

im trying to do a simple socket test program for a school project using the socket module, but im having difficulty in sending data between the client and host program.

so far all tutorials and examples have used something along the lines of:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 12345
s.connect((host, port))


and received it on the server end with:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = ''
port = 12345
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print ('client is at', addr)
data = conn.recv(5)
print(data)

it all works fine, except for when i try to use:

s.send("hello")

to send data between the client and server, i just get this error message:
Traceback (most recent call last):
File "C:/Users/Ollie/Documents/code/chatroom/client3.py", line 9, in <module>
s.send("hello")
TypeError: 'str' does not support the buffer interface
if anyone can either show me what im doing wrong, what this means and what's causing it, or even better how to fix it it would be greatly appreciated

many thanks Ollie
 
I

Irmen de Jong

it all works fine, except for when i try to use:

s.send("hello")

to send data between the client and server, i just get this error message:

Traceback (most recent call last):
File "C:/Users/Ollie/Documents/code/chatroom/client3.py", line 9, in <module>
s.send("hello")
TypeError: 'str' does not support the buffer interface

Are you using Python 3.x? Try sending bytes instead of strings:

s.send(b"hello")

Or switch to using Python 2.7

Irmen
 
M

MRAB

im trying to do a simple socket test program for a school project using the socket module, but im having difficulty in sending data between the client and host program.

so far all tutorials and examples have used something along the lines of:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 12345
s.connect((host, port))


and received it on the server end with:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = ''
port = 12345
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print ('client is at', addr)
data = conn.recv(5)
print(data)

it all works fine, except for when i try to use:

s.send("hello")

to send data between the client and server, i just get this error message:

Traceback (most recent call last):
File "C:/Users/Ollie/Documents/code/chatroom/client3.py", line 9, in <module>
s.send("hello")
TypeError: 'str' does not support the buffer interface

if anyone can either show me what im doing wrong, what this means and what's causing it, or even better how to fix it it would be greatly appreciated
You didn't say which version of Python you're using, but I think that
you're using Python 3.

A socket handles bytes, not Unicode strings, so you need to encode the
Unicode strings to bytes before sending, and decode the bytes to
Unicode strings after receiving.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top