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)
    

      

  • 相关阅读:
    解决vs code 内置终端,字体间隔过大问题。(linux centos7 ubuntu成功)
    安装Epson打印机但因lsb依赖错误而中断的驱动程序
    ubuntu 权限不够,解决办法,无法获得锁 /var/lib/dpkg/lock
    ubuntu 安装WPS
    GNU GRUB引导的默认启动项是ubuntu
    网络编程基础
    反射、特殊双下方法、单例模式
    异常处理
    封装、多态、类的约束、类的私有成员
    多继承、经典类与新式类、新式类的C3算法详解
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4733016.html
Copyright © 2011-2022 走看看