zoukankan      html  css  js  c++  java
  • socket

    socket

    socket通常称为'套接字',用于描述ip地址和端口,是一个通信链的句柄,应用程序通常通过'套接字'向网络发出请求或者应答网络请求.

    socket起源于Unix,Unix/Linux基本哲学之一就是'一切皆文件',对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO,打开,关闭)

    socket和file的区别:

      file模块是针对某个指定文件进行[打开][读写][关闭]

      socket模块是针对服务器端和客户端进行[打开][读写][关闭]

    客户端: cs架构, client -> server

    浏览器:bs架构, browser-> server

    基于socket模块实现网络通信

      python2 ,send/recv 发送的都是字符串

      python3 ,send/recv 发送的都是字节(需要将发送的信息转换为字节)

    阻塞:

      服务端:

        accept, 阻塞:等待客户端来连接

        recv,     阻塞:等待客户端发送数据

      客户端:

        connect, 阻塞:一直连接,直到连接成功才往下运行其他代码

        recv,       阻塞:等待服务端发送数据

    基于TCP协议的socket

    import socket
    server = socket.socket()
    server.bind(('192.168.13.188', 9001))
    server.listen(5)
    conn,addr = server.accept()
    response = conn.recv(1024)
    print(response)
    conn.send(b'This is server')
    conn.close()
    TCP服务端
    import socket
    client = socket.socket()
    client.connect(('192.168.13.188', 9001))
    client.send(b'This is client.')
    response = client.recv(1024)
    print(response)
    client.close()
    TCP客户端

     基于UDP协议的socket

    import socket
    server = socket.socket(type=socket.SOCK_DGRAM)#创建一个服务器套接字
    ip_port = ('127.0.0.1', 8000)
    server.bind(ip_port)                          #绑定服务器套接字
    conn, addr= server.recvfrom(1024)
    print(conn.decode('utf-8'))
    server.sendto('hello'.encode('utf-8'), addr)  #对话,接收与发送
    server.close()                                #关闭服务器套接字
    UDP服务端
    import socket
    client = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1', 8000)
    client.sendto('world'.encode('utf-8'), ip_port)
    conn,addr = client.recvfrom(1024)
    print(conn.decode('utf-8'), addr)
    UDP客户端
  • 相关阅读:
    RedHat Linux-配置YUM仓库
    04、管道符、重定向与环境变量
    03、新手必须掌握的Linux命令
    size_t
    decltype关键字
    python numpy使用笔记
    Huffman编码
    动态规划(dynamic programming)
    Prim算法
    Kruskal算法
  • 原文地址:https://www.cnblogs.com/Virous1887/p/9578921.html
Copyright © 2011-2022 走看看