websocket

http协议通信只能由客户端发起;

 

简述:websocket 基于tcp协议  建立客户端和服务端的通信通道

例子:在python的安装路径下,创建一个文件cmd.bat,该文件中写入cmd.exe,双击cmd.bat,打开窗口然后运行python server.py   和 python client.py。

运行效果:实现client和server的实时聊天通信。

短连接——一次通信

【服务器端】

# -*-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()

 长连接:

【服务端】

# -*-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()

【客户端】

# -*-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()

 

遇到的问题:

1、WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

 

 

 

 

 

posted @ 2019-11-08 12:15  Alieen617  阅读(160)  评论(0编辑  收藏  举报