socket data sending problem

MRAB python at mrabarnett.plus.com
Wed Jul 3 19:02:21 EDT 2013


On 03/07/2013 23:38, ollietempleman at aol.com wrote:
> 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.




More information about the Python-list mailing list