python socket代码 摘自 Programming Python 原汁原味代码
客户端
############################################################################# Server side: open a TCP/IP socket on a port, listen for a message from# a client, and send an echo reply; this is a simple one-shot listen/reply# conversation per client, but it goes into an infinite loop to listen for# more clients as long as this server script runs; the client may run on # a remote machine, or on same computer if it uses 'localhost' for server############################################################################ from socket import * # get socket constructor and constantsmyHost = '' # server machine, '' means local hostmyPort = 50007 # listen on a non-reserved port number sockobj = socket(AF_INET, SOCK_STREAM) # make a TCP socket objectsockobj.bind((myHost, myPort)) # bind it to server port number sockobj.listen(5) # listen, allow 5 pending connects while True: # listen until process killed connection, address = sockobj.accept() # wait for next client connect print 'Server connected by', address # connection is a new socket while True: data = connection.recv(1024) # read next line on client socket if not data: break # send a reply line to the client connection.send('Echo=>' + data) # until eof when socket closed connection.close()
客户端
############################################################################# Client side: use sockets to send data to the server, and print server's # reply to each message line; 'localhost' means that the server is running# on the same machine as the client, which lets us test client and server # on one machine; to test over the Internet, run a server on a remote# machine, and set serverHost or argv[1] to machine's domain name or IP addr;# Python sockets are a portable BSD socket interface, with object methods # for the standard socket calls available in the sytstem's C library;############################################################################ import sysfrom socket import * # portable socket interface plus constantsserverHost = 'localhost' # server name, or: 'starship.python.net'serverPort = 50007 # non-reserved port used by the server message = ['1'] # default text to send to serverif len(sys.argv) > 1: serverHost = sys.argv[1] # or server from cmd line arg 1 if len(sys.argv) > 2: # or text from cmd line args 2..n message = sys.argv[2:] # one message for each arg listed sockobj = socket(AF_INET, SOCK_STREAM) # make a TCP/IP socket objectsockobj.connect((serverHost, serverPort)) # connect to server machine and port for line in message: sockobj.send(line) # send line to server over socket data = sockobj.recv(1024) # receive line from server: up to 1k print 'Client received:', repr(data) # make sure it is quoted, was `x` sockobj.close() # close socket to send eof to server