服务器端:
import argparse
import socket
import sys
host = "localhost"
data_payload = 2048
backlog = 5
def echo_server( port ):
sock = socket.socket( family = socket.AF_INET,
type = socket.SOCK_STREAM )
sock.setsockopt( socket.SOL_SOCKET,
socket.SO_REUSEADDR,
1 )
server_addr = ( host, port )
print "server: %s, port: %s" % server_addr
sock.bind( server_addr )
sock.listen( backlog )
while True:
print "Waiting from client."
client, addr = sock.accept()
data = client.recv( data_payload )
if data:
print "Data: %s" % data
client.send( data )
print "Sent %s bytes back to %s" % ( data, addr )
client.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument( "--port",
action = "store",
dest = "port",
type = int,
required = True )
args = parser.parse_args()
port = args.port
echo_server( port )
客户端:
import socket
import sys
import argparse
host = "localhost"
def echo_client( port ):
sock = socket.socket( family = socket.AF_INET,
type = socket.SOCK_STREAM )
server_addr = ( host, port )
print "Connecting to %s port %s" % server_addr
sock.connect( server_addr )
try:
msg = "Test message. This will be echoed."
print "Sending %s" % msg
sock.sendall( msg )
amount_received = 0
amount_excepted = len( msg )
while amount_received < amount_excepted:
data = sock.recv( 16 )
print "==" * 20
amount_received += len( data )
print "Received: %s" % data
except socket.errno, e:
print "Socket error: %s" % str( e )
except Exception, e:
print "Other exception: %s" % str( e )
finally:
print "Closing connection"
sock.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument( "--port",
action = "store",
dest = "port",
type = int,
required = True )
args = parser.parse_args()
port = args.port
echo_client( port )