zoukankan      html  css  js  c++  java
  • 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)
    

      

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4733016.html
Copyright © 2011-2022 走看看