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)
    

      

  • 相关阅读:
    洛谷P1586 四方定理
    洛谷P3807 【模板】卢卡斯定理exgcd
    扩展中国剩余定理详解
    HDU 1573 X问题
    POJ 2891 Strange Way to Express Integers
    中国剩余定理详解
    java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决方案
    MySQL对于有大量重复数据表的处理方法
    【一牛鸣】下周或触发新变盘9.16
    Django里面的RequestContext
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4733016.html
Copyright © 2011-2022 走看看