本文实例讲述了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:,30python基于套接字实现的UDP及TCP通讯功能示例