Long Ge wrote:
import socket

if __name__ == '__main__':
    print("main")
    udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    udp.sendto("1",0,('127.0.0.1 <http://127.0.0.1>',3722))
    udp.close()

*output:*
main
Traceback (most recent call last):
  File "C:\Python30\Projects\udp.py", line 6, in <module>
    udp.sendto("1",0,('127.0.0.1 <http://127.0.0.1>',3722))
TypeError: sendto() argument 1 must be bytes or read-only buffer, not str
what is the problem about argument 1?

Python 3.0 is much stricter than 2.x about the distinction between character based-data (i.e. Unicode strings) and 8-bit byte sequences (bytes and bytearray).

As Benjamin pointed out, socket.sendto expects a bytestream rather than a character string, so you need to either use bytes directly (such as b"1") or encode the character string to a byte sequence (such as "1".encode("utf-8")).

Cheers,
Nick.

--
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
            http://www.boredomandlaziness.org
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to