zoukankan      html  css  js  c++  java
  • 网络编程之socket

    1.socket概念

    socket层

    理解socket

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    其实站在我们的角度上看,socket就是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。
    也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。
    所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信。

    2.套接字(socket)初使用

    基于TCP协议的socket

    tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端

    server端

    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
    sk.listen()          #监听链接
    conn,addr = sk.accept() #接受客户端链接
    ret = conn.recv(1024)  #接收客户端信息
    print(ret)       #打印客户端信息
    conn.send(b'hi')        #向客户端发送信息
    conn.close()       #关闭客户端套接字
    sk.close()        #关闭服务器套接字(可选)
    +

    client端

    import socket
    sk = socket.socket()           # 创建客户套接字
    sk.connect(('127.0.0.1',8898))    # 尝试连接服务器
    sk.send(b'hello!')
    ret = sk.recv(1024)         # 对话(发送/接收)
    print(ret)
    sk.close()            # 关闭客户套接字
    +

    基于UDP协议的socket

    udp是无链接的,启动服务之后可以直接接受消息不需要提前建立链接

    server端

    import socket
    udp_sk = socket.socket(type=socket.SOCK_DGRAM)   #创建一个服务器的套接字
    udp_sk.bind(('127.0.0.1',9000))        #绑定服务器套接字
    msg,addr = udp_sk.recvfrom(1024)
    print(msg)
    udp_sk.sendto(b'hi',addr)                 # 对话(接收与发送)
    udp_sk.close()                         # 关闭服务器套接字
    +

    client端

    import socket
    ip_port=('127.0.0.1',9000)
    udp_sk=socket.socket(type=socket.SOCK_DGRAM)
    udp_sk.sendto(b'hello',ip_port)
    back_msg,addr=udp_sk.recvfrom(1024)
    print(back_msg.decode('utf-8'),addr)
    +

    socket参数的详解

    socket对象的参数说明:

  • 相关阅读:
    在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]
    Linux Ubuntu 20.04 —添加开机启动(服务/脚本)
    Ubuntu进入文件夹路径及查看文件夹目录
    Ubuntu20.04安装JDK
    How to install shutter on Linux 20.04
    在Ubuntu 20.04 中以管理员Root 身份用可视化的方式打开根目录文件夹
    在Ubuntu 20.04 上安装Chromium
    Ubuntu20.04安装搜狗输入法的详细步骤
    Ubuntu 20.04换国内源 清华源 阿里源 中科大源 163源
    linux Deepin 20 系统更新源.txt
  • 原文地址:https://www.cnblogs.com/caoshitong/p/9641063.html
Copyright © 2011-2022 走看看