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)
    

      

  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4733016.html
Copyright © 2011-2022 走看看