zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Hibernate 配置双向多对多关联
    转 方法区(method) )、栈区(stack)和堆区(heap)之JVM 内存初学
    java web 实战经典(二)
    flex 生成多边形时内、外环计算
    java web 开发实战经典(一)
    sql语句联表更新(从一个数据库中的一张表更新到另一个数据库的另一张表)
    javascript DOM编程艺术(检测与性能优化)
    java数据库基本操作(sqlserver 2000为例)
    同一台电脑上配置多个解压版tomcat方法(本例安装两个)
    css那些事(一)
  • 原文地址:https://www.cnblogs.com/hd-test/p/11819326.html
Copyright © 2011-2022 走看看