http協議通訊只能由客戶端發起;python
簡述:websocket 基於tcp協議 創建客戶端和服務端的通訊通道web
例子:在python的安裝路徑下,建立一個文件cmd.bat,該文件中寫入cmd.exe,雙擊cmd.bat,打開窗口而後運行python server.py 和 python client.py。服務器
運行效果:實現client和server的實時聊天通訊。websocket
短鏈接——一次通訊socket
【服務器端】tcp
# -*-coding:utf-8 -*- import socket host='127.0.0.1' port=8001 # 建立socket對象,family表示地址家族,type表明協議類型 s=socket.socket() # 建立套接字 s.bind((host,port)) # 接收的參數是元組 s.listen(5) # 隊列滿了以後容許客戶端鏈接到服務器個數 # clnt 新的套接字對象,addr 地址 clnt,addr = s.accept() # send——resave # 接收的最大數據爲1024字節 data = clnt.recv(1024) print(data) clnt.sendall() s.close()
【客戶端】大數據
# -*-coding:utf-8 -*- import socket # 建立socket對象,family表示地址家族,type表明協議類型 # 建立套接字 s=socket.socket() # 鏈接服務器的地址 s.connect(('127.0.0.1',8002)) cmd = input('please input:')
cmd=cmd.encode() s.sendall(cmd) data=s.recv(1024) print(data) s.close()
長鏈接:ui
【服務端】spa
# -*-coding:utf-8 -*- import socket host='127.0.0.1' port=8002 # 建立socket對象,family表示地址家族,type表明協議類型 s=socket.socket() # 建立套接字 s.bind((host,port)) # 接收的參數是元組 s.listen(5) # 隊列滿了以後容許客戶端鏈接到服務器個數 # clnt 新的套接字對象,addr 地址 clnt,addr = s.accept() print ('cline address:',addr) while True: # send——resave # 接收的最大數據爲1024字節 data = clnt.recv(1024) print(data) clnt.sendall(data) s.close()
【客戶端】code
# -*-coding:utf-8 -*- import socket # 建立socket對象,family表示地址家族,type表明協議類型 # 建立套接字 s=socket.socket() # 鏈接服務器的地址 s.connect(('127.0.0.1',8002)) while True: cmd = input('please input:') if cmd == 'quit':break cmd=cmd.encode() s.sendall(cmd) data=s.recv(1024) print(data) s.close()
遇到的問題:
一、WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR