socket send help

greywine at gmail.com greywine at gmail.com
Wed Dec 24 00:59:42 EST 2008


Hi everyone,

New guy here.  I'm trying to figure out sockets in order to one day do
a multiplayer game.  Here's my problem:  even the simplest examples
don't work on my computer:

A simple server:

from socket import *
myHost = ''
myPort = 21500

s = socket(AF_INET, SOCK_STREAM)    # create a TCP socket
s.bind((myHost, myPort))            # bind it to the server port
s.listen(5)                         # allow 5 simultaneous connections

while True:
    connection, address = s.accept()
    while True:
        data = connection.recv(1024)
        if data:
            connection.send('echo -> ' + data)
        else:
            break
    connection.close()              # close socket

And a simple client:

import sys
from socket import *
serverHost = 'localhost'            # servername is localhost
serverPort = 21500                  # use arbitrary port > 1024

s = socket(AF_INET, SOCK_STREAM)    # create a TCP socket


s.connect((serverHost, serverPort)) # connect to server on the port
s.send('Hello world')               # send the data
data = s.recv(1024)                 # receive up to 1K bytes
print(data)


If I run testserver.py via the cmd prompt in Windows XP and then the
testclient.py program, I get the following error:

Traceback (most recent call last):
  File "C:\Python30\testclient.py", line 12, in <module>
    s.send('Hello world')               # send the data
TypeError: send() argument 1 must be string or buffer, not str

This happens in 2.6 or 3.0 and with different example client & server
programs from the web.  What am I missing?

Thanks,

John R.



More information about the Python-list mailing list