VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(30):黏包、socket的其他方法(7)

  • self.socket_type)
  • if connect:
  • try:
  • self.client_connect()
  • except:
  • self.client_close()
  • raise
  •  
  • def client_connect(self):
  • self.socket.connect(self.server_address)
  •  
  • def client_close(self):
  • self.socket.close()
  •  
  • def run(self):
  • while True:
  • inp=input(">>: ").strip()
  • if not inp:continue
  • l=inp.split()
  • cmd=l[0]
  • if hasattr(self,cmd):
  • func=getattr(self,cmd)
  • func(l)
  •  
  • def put(self,args):
  • cmd=args[0]
  • filename=args[1]
  • if not os.path.isfile(filename):
  • print('file:%s is not exists' %filename)
  • return
  • else:
  • filesize=os.path.getsize(filename)
  •  
  • head_dic={'cmd':cmd,'filename':os.path.basename(filename),'filesize':filesize}
  • print(head_dic)
  • head_json=json.dumps(head_dic)
  • head_json_bytes=bytes(head_json,encoding=self.coding)
  •  
  • head_struct=struct.pack('i',len(head_json_bytes))
  • self.socket.send(head_struct)
  • self.socket.send(head_json_bytes)
  • send_size=0
  • with open(filename,'rb') as f:
  • for line in f:
  • self.socket.send(line)
  • send_size+=len(line)
  • print(send_size)
  • else:
  • print('upload successful')
  •  
  •  
  • client=MYTCPClient(('127.0.0.1',8080))
  •  
  • client.run()
  • 回到顶部(go to top)

    2. socket其他方法介绍

    
    	
    1. 服务端套接字函数
    2. s.bind() 绑定(主机,端口号)到套接字
    3. s.listen() 开始TCP监听
    4. s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来
    5.  
    6. 客户端套接字函数
    7. s.connect() 主动初始化TCP服务器连接
    8. s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
    9.  
    10. 公共用途的套接字函数
    11. s.recv() 接收TCP数据
    12. s.send() 发送TCP数据
    13. s.sendall() 发送TCP数据
    14. s.recvfrom() 接收UDP数据
    15. s.sendto() 发送UDP数据
    16. s.getpeername() 连接到当前套接字的远端的地址
    17. s.getsockname() 当前套接字的地址
    18. s.getsockopt() 返回指定套接字的参数
    19. s.setsockopt() 设置指定套接字的参数
    20. s.close() 关闭套接字
    21.  
    22. 面向锁的套接字方法
    23. s.setblocking() 设置套接字的阻塞与非阻塞模式
    24. s.settimeout() 设置阻塞套接字操作的超时时间
    25. s.gettimeout() 得到阻塞套接字操作的超时时间
    26.  
    27. 面向文件的套接字的函数
    28. s.fileno() 套接字的文件描述符
    29. s.makefile() 创建一个与该套接字相关的文件

    send和sendall方法:

    
    	
    1. 官方文档对socket模块下的socket.send()和socket.sendall()解释如下:
    2.  
    3. socket.send(string[, flags])
    4. Send data to the socket. The socket must be connected to a remote socket. The optional flags argument has the same meaning as for recv()
    
    相关教程