python基于套接字实现的UDP及TCP通讯功能示例

  

本文实例讲述了python基于套接字实现的UDP及TCP通讯功能。分享给大家供大家参考,具体如下:

  服务器:

        进口套接字   地址=(127.0.0.1,31500)   s=socket.socket(套接字。AF_INET socket.SOCK_DGRAM)   s.bind(地址)   而真正的:   数据,addr=s.recvfrom (2048)   如果没有数据:   打印“客户已存在”   打破   打印“收到:“数据”从“addr   s.close ()      之前      

客户:         进口套接字   地址=(127.0.0.1,31500)   s=socket.socket(套接字。AF_INET socket.SOCK_DGRAM)   而真正的:   味精=raw_input ()   如果没有味精:   打破   年代。sendto(味精、地址)   s.close ()      之前      

运行结果:

  服务器

  
  

(work@db-testing python) python udp_ss美元。py
  收到:aaaaaa (127.0.0.1, 10169)
  收到:123456 (127.0.0.1,10169)
  收到:六边形abcdef (127.0.0.1, 10169)

     

客户端   

  

(work@db-testing python) python udp_cc美元。py
  aaaaaa
  123456年
  六边形abcdef
  美元(work@db-testing python)

     

  

python实在是太方便,太易用了,三方库的支持又全,语法又简单,对开发人员来说,实在是居家旅行,XXXX的必备利器。周末研究了下python的网络支持,做一下记录,以备随后翻阅。

  

python支持BSD的套接字进行网络编程,其API跟C中的大同小异,先看看TCP方式的,说到网络编程,肯定会设计到服务器和客户端,分别来看下

  

<强> TCP方式

  

服务器端   

服务器端套接字的一般流程是这样:

  
      <李>建立一个套接字(可以选择套接字类型INET, UNIX等,以及连接方式TCP/UDP)   <李>使用绑定公开一个端口,使得客户可以方便连接李   <李>设置一个队听列的大小李   <李>进入一个无限循环,在此无限循环中,使用接受函数来等待客户连接,此函数返回一个新的插座,对应于客户端的插座,建立通信信道。对插座的处理一般放在外部单独的函数中(并发)   <李>通过发送()/recv()来对套接字进行读写操作李   
  

好了、下面看一下例子:

  

netserver.py         #?usr/bin/env python   # - * -编码:utf8 - * -   导入系统   重载(系统)   sys.setdefaultencoding (“utf - 8”)   进口套接字   类NetServer(对象):   def tcpServer(自我):   袜子=socket.socket(插座。AF_INET socket.SOCK_STREAM)   袜子。绑定(",9527)#绑定同一个域名下的所有机器   sock.listen (5)   而真正的:   clientSock(应remotePort)=sock.accept ()   打印(“[% s % s):连接“%(应remotePort)) #接收客户端的ip、端口   revcData=https://www.yisu.com/zixun/clientSock.recv (1024)   sendDataLen=clientSock。发送(“这是向服务器发送数据”)   打印”revcData:“revcData   打印”sendDataLen:“sendDataLen   clientSock.close ()   if __name__==癬_main__”:   netServer=netServer ()   netServer.tcpServer ()      之前      

客户端   

      <李>建立一个新的套接字   <李>使用连接函数与远程主机获得连接李   <李>在此套接字上进行I/O操作李   
  

netclient.py         #?usr/bin/env python   # - * -编码:utf8 - * -   导入系统   重载(系统)   sys.setdefaultencoding (“utf - 8”)   进口套接字   类NetClient(对象):   def tcpclient(自我):   clientSock=socket.socket(插座。AF_INET socket.SOCK_STREAM)   clientSock。连接((' localhost ', 9527))   sendDataLen=clientSock。发送(“这是从客户端发送数据”)   recvData=https://www.yisu.com/zixun/clientSock.recv (1024)   打印”sendDataLen:“sendDataLen   打印”recvData:“recvData   clientSock.close ()   if __name__==癬_main__”:   netClient=netClient ()   netClient.tcpclient ()      之前      

运行结果:

  

1)先启动netserver。py,然后启动netclient.py,注意客户先发送后接收,服务器是先接收后发送,顺序要交错

  

2)服务器打印结果:

  
  

[127.0.0.1:55279]连接
  revcData:,这是从客户端发送数据
  sendDataLen:,30

python基于套接字实现的UDP及TCP通讯功能示例