网络开发框架初识以及socket
cs 框架
sever client
手机端:统一了程序的入口(微信小程序、微信公众号等)
bs框架
sever browser
pc端:趋势—统一了程序的入口(浏览器百度)
基于tcp协议的socket
1 #server服务器(百度总部) 2 import socket 3 sk = socket.socket() #买手机 4 sk.bind(('127.0.0.1', 9000)) #装手机卡 5 sk.listen() #开机 6 while True: 7 try: 8 conn, addr = sk.accept() #等消息 9 #conn是一个连接对象,里边存储了双方的ip地址和端口,addr相当于备份 10 print(conn) 11 while True: 12 msg = input('>>>') 13 conn.send(msg.encode('utf-8')) #给对方发信息 14 if msg == 'q': #q为退出 15 break 16 msg = conn.recv(1024) #接收对方的信息 17 if msg == b'q': 18 break 19 print(msg.decode('utf-8')) #打印接收的信息 20 conn.close() 21 except UnicodeDecodeError: 22 pass 23 sk.closer() 24 #sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 25 #在bind前加,重用ip和端口,解决ip和端口被占用问题 26 27 #client 客户端(浏览器访问百度) 28 import socket 29 30 sk = socket.socket() 31 sk.connect(('127.0.0.1',9000)) 32 while True: 33 msg = sk.recv(1024) #接收信息 34 if msg == b'q': #q退出 35 break 36 print(msg.decode('utf-8')) 37 re_msg = input('>>>') 38 sk.send(re_msg.encode('utf-8')) #给对方发信息 39 if re_msg == 'q': 40 break 41 sk.close()
1 #server 服务器 2 import socket 3 sk = socket.socket() 4 sk.bind(('127.0.0.1', 8080)) 5 sk.listen() 6 7 conn, addr = sk.accept() 8 filename = conn.recv(1024) 9 print('>>>filename', filename) 10 with open(filename, 'wb')as f: 11 content = conn.recv(4096) 12 f.write(content) 13 conn.close() 14 sk.close() 15 16 #client 顾客 17 import socket 18 sk = socket.socket() 19 sk.connect(('127.0.0.1', 8080)) 20 21 sk.send('9.总结.py'.encode('utf-8')) 22 with open(r'E:\飞秋\老师笔记\day30\9.总结.py','rb')as f: 23 content = f.read() 24 print(len(content)) 25 sk.send(content) 26 sk.close()
基于udp协议的socket
1 #server 服务器 2 import socket 3 sk = socket.socket(type=socket.SOCK_DGRAM) #表明类型 4 sk.bind(('127.0.0.1', 8888)) 5 6 while True: 7 msg, addr = sk.recvfrom(1024) #接收哪里的from 8 print(addr, msg.decode('utf-8')) 9 se_msg = input('>>>') 10 sk.sendto(se_msg.encode('utf-8'), addr) #发到哪里 to 11 sk.close() 12 13 #client 14 import socket 15 sk = socket.socket(type=socket.SOCK_DGRAM) 16 17 while True: 18 msg_send = input('>>>') 19 sk.sendto(msg_send.encode('utf-8'), ('127.0.0.1', 8888)) 20 msg, addr = sk.recvfrom(1024) 21 print(msg.decode('utf-8'), addr) 22 sk.close() 23 #因为udp没有连接,所以不知道对方的ip,所以要先接收到才可以回
清风深知杨柳意,啤酒龙虾难相聚。

浙公网安备 33010602011771号