zoukankan      html  css  js  c++  java
  • socket 套接字通信

    一、什么是socket?
    socket是一个模块, 又称套接字,用来封装 互联网协议(应用层以下的层)。

    二、为什么要有socket?
    socket可以实现互联网协议 应用层以下的层 的工作,提高开发效率。

    三、怎么使用socket?
    import socket
    写socket套接字:

    Client
    Server
    使用如下:client.py

    '''
    启动服务端后再启动客户端
    '''
    import socket

    #1.买手机
    client = socket.socket() #拿到一个手机对象

    #2.拨号
    client.connect(('127.0.0.1',9527)) #客户端的ip和port必须与服务器一致

    print('client is running')
    #3.通信循环
    #讲话给对方听
    while True:

    send_data = input('客户端>>>:')
    client.send(send_data.encode('utf-8')) #只能发bytes类型
    data = client.recv(1024)
    if data.decode('utf-8') == 'q':
    break
    if len(data) == 0:
    break

    print(data.decode('utf-8'))

    #4.断开连接
    client.close()

    server.py

    '''
    先启动套接字服务端
    注意:
    客户端先一次发送,服务端得先一次接受,再发送消息。
    '''
    import socket

    #1.买手机
    server = socket.socket() #拿到一个手机对象
    # print(server) # server是用来收发链接请求,建立链接

    #2.绑手机卡
    server.bind(('127.0.0.1',9527)) #0-65535 #本地回环地址 ---》'127.0.0.1'

    #3.开机(半连接池)
    server.listen(5) #同一时刻,最大请求数为5个 实际==6
    print('sever is running')

    #4.等待电话请求
    #conn:指的是服务端往客户端的管道
    conn,addr = server.accept() #(双向连接的套接字对象,存放客户端IP和端口的小元组)
    # print(conn) #conn代表双向链接,用来收发链接

    #5.循环实现可接受多个用户访问
    while True:
    #等待电话接入 --->接入客户端
    # conn: 指的是服务端往客户端的管道
    conn,addr = server.accpt()
    print(addr)

    #实现循环通信
    while True:
    try: #监听代码块是否有异常出现
    # 接受对方讲话的内容
    # data --->客户端发送过来的消息
    data = conn.recv(1024) #1024接受的最大字节数bytes
    if len(data) == 0:
    break
    if data.decode('utf-8') == 'q':
    break

    print(data.decode('utf-8'))
    send_data = input('服务器>>>:')

    #服务器往客户端发送消息
    conn.send(send_data.encode('utf-8'))
    # 捕获异常信息,并打印 # e: 报错信息
    except Exception as e:
    print(e)
    break

    #6.挂电话连接
    conn.close()
    原文链接:https://blog.csdn.net/weixin_45816565/article/details/103410171

  • 相关阅读:
    机器学习python实战----决策树
    机器学习python实战----手写数字识别
    机器学习python实战----k近邻算法
    斯坦福2014机器学习笔记八----机器学习系统的设计
    斯坦福2014机器学习笔记七----应用机器学习的建议
    斯坦福2014机器学习笔记六----神经网络(二)
    Global Game Jam 2019 深圳站 个人总结
    加法乘法线段树模板
    线段树模板题
    单调栈和单调队列入门
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/11991927.html
Copyright © 2011-2022 走看看