Python Socket学习
来源:互联网 发布:logback 不打印sql 编辑:程序博客网 时间:2024/06/06 19:48
Python Socket学习
Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式
UDP通讯:
Server:
import socketport=8081s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#从指定的端口,从任何发送者,接收UDP数据s.bind(('',port))print('正在等待接入...')while True: #接收一个数据 data,addr=s.recvfrom(1024) print('Received:',data,'from',addr)
Client:
import socketport=8081host='localhost's=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.sendto(b'hello,this is a test info !',(host,port))
很简单 。下面是TCP方式:
Server:
#-*- coding: utf-8 -*-from socket import *from time import ctimeHOST=''PORT=12345BUFSIZ=1024ADDR=(HOST, PORT)sock=socket(AF_INET, SOCK_STREAM)sock.bind(ADDR)sock.listen(5)while True: print('waiting for connection') tcpClientSock, addr=sock.accept() print('connect from ', addr) while True: try: data=tcpClientSock.recv(BUFSIZ) except: print(e) tcpClientSock.close() break if not data: break s='Hi,you send me :[%s] %s' %(ctime(), data.decode('utf8')) tcpClientSock.send(s.encode('utf8')) print([ctime()], ':', data.decode('utf8'))tcpClientSock.close()sock.close()
Client:
#-*- coding: utf-8 -*-from socket import *class TcpClient: HOST='127.0.0.1' PORT=12345 BUFSIZ=1024 ADDR=(HOST, PORT) def __init__(self): self.client=socket(AF_INET, SOCK_STREAM) self.client.connect(self.ADDR) while True: data=input('>') if not data: break self.client.send(data.encode('utf8')) data=self.client.recv(self.BUFSIZ) if not data: break print(data.decode('utf8')) if __name__ == '__main__': client=TcpClient()
上面的TCP方式有个问题,不能退出,好吧,我们改造一下,使这个程序可以发送quit命令以退出:
Server:
#-*- coding: utf-8 -*-from socket import *from time import ctimefrom time import localtimeimport timeHOST=''PORT=1122 #设置侦听端口BUFSIZ=1024ADDR=(HOST, PORT)sock=socket(AF_INET, SOCK_STREAM)sock.bind(ADDR)sock.listen(5)#设置退出条件STOP_CHAT=Falsewhile not STOP_CHAT: print('等待接入,侦听端口:%d' % (PORT)) tcpClientSock, addr=sock.accept() print('接受连接,客户端地址:',addr) while True: try: data=tcpClientSock.recv(BUFSIZ) except: #print(e) tcpClientSock.close() break if not data: break #python3使用bytes,所以要进行编码 #s='%s发送给我的信息是:[%s] %s' %(addr[0],ctime(), data.decode('utf8')) #对日期进行一下格式化 ISOTIMEFORMAT='%Y-%m-%d %X' stime=time.strftime(ISOTIMEFORMAT, localtime()) s='%s发送给我的信息是:%s' %(addr[0],data.decode('utf8')) tcpClientSock.send(s.encode('utf8')) print([stime], ':', data.decode('utf8')) #如果输入quit(忽略大小写),则程序退出 STOP_CHAT=(data.decode('utf8').upper()=="QUIT") if STOP_CHAT: breaktcpClientSock.close()sock.close()
Client:
#-*- coding: utf-8 -*-from socket import *class TcpClient: #测试,连接本机 HOST='127.0.0.1' #设置侦听端口 PORT=1122 BUFSIZ=1024 ADDR=(HOST, PORT) def __init__(self): self.client=socket(AF_INET, SOCK_STREAM) self.client.connect(self.ADDR) while True: data=input('>') if not data: break #python3传递的是bytes,所以要编码 self.client.send(data.encode('utf8')) print('发送信息到%s:%s' %(self.HOST,data)) if data.upper()=="QUIT": break data=self.client.recv(self.BUFSIZ) if not data: break print('从%s收到信息:%s' %(self.HOST,data.decode('utf8'))) if __name__ == '__main__': client=TcpClient()
注:以上代码为Python3。
0 0
- Python socket编程学习
- Python Socket学习
- Python Socket学习
- Python的Socket学习
- python学习笔记--socket
- python学习之 socket
- Python Socket学习记录
- python学习笔记 socket、socket server
- Python学习笔记三--socket
- 学习python(3)socket
- python学习服务器端socket建立
- python学习笔记6-socket
- Python学习记录-socket编程
- python学习之socket编程
- Python学习之Socket(一)
- Python socket编程学习(一)socket服务器端
- Python socket编程学习(二)socket客户端
- Python 之 Socket编程学习笔记
- Win7 update to win10
- Viewport vs Page
- 我的分享
- iOS—常用iOS、Mac框架和库及常用中文开发博客
- Effective C++——条款52(第8章)
- Python Socket学习
- linux服务器上svn的安装和配置
- 两段异或和的最大值 二进制TRIE图表达式 XOR CodeChef Nikitosh and xor
- 跟我一起读Hadoop源码——HDFS篇(01)
- 好用的全盘搜索软件Everything
- 【Jenkins系列之五】Jenins安全管理和权限控制
- C++替换字符
- Java正则表达式入门
- Word公式和文字的显示位置调整