Python 简单的客户端/服务器应用

Server:

import socket
import sys
import argparse

host = 'localhost'
data_payload = 2048
backlog = 5

def echo_server(port):
	'''A simple echo server'''
	#Create a TCP socket
	sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	#Enable reuse address /port
	sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
	#Bind the socket to the port
	server_address = (host, port)
	print "Starting up echo server on %s port %s " %server_address
	sock.bind(server_address)
	#Listen to clients, backlog argument specifies the max number of queued connections
	sock.listen(5)
	while True:
		print "Waiting to receive message from client"
		client, address = sock.accept()
		data = client.recv(data_payload)
		if data:
			print "Data: %s" %data
			client.send(data)
			print "send %s bytes back to %s" %(len(data), address)
		#End connection
		client.close()

if __name__=="__main__":
	parser = argparse.ArgumentParser(description='Socket Server Example')
	parser.add_argument('--port', action='store', dest='port', type=int, required=True)
	given_args = parser.parse_args()
	port = given_args.port

	echo_server(port)

  

 

 

Client:

import socket
import sys
import argparse


host = 'localhost'

def echo_client(port):
	'''A simple echo client'''
	#Create a TCP/IP socket
	sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	#Connect the socket to the server
	server_address = (host, port)
	print "Connecting to %s port %s"  %server_address
	sock.connect(server_address)

	#Send data
	try:
		#Send data
		message = "Test message. This will be echoed."
		print "Sending %s" %message
		sock.sendall(message)
		#Look for the response
		amount_received = 0
		amount_expected = len(message)
		while amount_received < amount_expected:
			data = sock.recv(16)
			amount_received +=len(data)
			print "Receviced :%s " %data
	except socket.error, e:
		print "Socket error: %s"  %str(e)
	except Exception, e:
		print "Other exception: %s"  %str(e)
	finally:
		print "Closing connection to the server"
		sock.close()

if __name__=="__main__":
	parser = argparse.ArgumentParser(description='Socket Client Example')
	parser.add_argument('--port', action='store', dest='port', type=int, required=True)
	given_args = parser.parse_args()

	port = given_args.port

	echo_client(port)

  

posted @ 2015-08-15 20:13  arhatlohan  阅读(439)  评论(0编辑  收藏  举报