zoukankan      html  css  js  c++  java
  • python_socket2

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
    
    socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)
    
    socket和file的区别:
    
    file模块是针对某个指定文件进行【打开】【读写】【关闭】
    socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】
    

    socket编程步骤

    Client端

    #创建一个socket连接服务器
    socket = socket.socket()

    #使用connect连接服务器,传的是个tuple
    socket.connect((host,port))

    #客户端发送数据,将string中的数据发送到连接的套接字,返回值是要发送的字节数量。
    socket.send(string)

    #通过递归调用send,将所有内容发送出去若成功返回None,若没成功则抛出异常
    socket.sendall(string)

    #设置接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数据量
    socket.recv(bufsize)

    #传输完毕后关闭套接
    socket.close()

      

    Server端

    #实例化socket对象socket = socket.socket()


    #bind服务器地址
    socket.bind(address)

    #设置监听,可以设置当时的并发数
    socket.listen(num)

    #设置连接返回(conn,addr)其中conn是新的套接对象,可以用来接收和发送数据
    #addr是连接客户端的地址
    conn,addr = socket.accept()

    #设置接收套接字,数据以字符串形式返回,bufsize指定最多可以接收的数量
    socket.recv(bufsize)

    #关闭socket通道
    socket.close()
    服务端
    import socket
    server = socket.socket()
    server.bind(("localhost",9999))
    server.listen()
    print ("wait..")
    conn,addr = server.accept()
    print (conn,addr)
    server.close()

      

    客户端
    import sockert
    client = socket.socket()
    client.connect("localhost",9999)
    client.close()
    <socket.socket fd=324, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1'6969), raddr=('127.0.0.1'4476)> ('127.0.0.1'4476)

      

  • 相关阅读:
    C++ 黑白棋AI minimax+alphabeta剪枝
    BZOJ2839 集合计数 容斥
    BZOJ2287 消失之物
    CF235B Let's Play Osu! 期望DP
    线性基
    [HAOI2008]糖果传递 结论题
    [HAOI2007]上升序列
    线性筛及线性递推欧拉函数
    Codeforces 1064D/1063B Labyrinth
    洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP
  • 原文地址:https://www.cnblogs.com/zoee/p/5871194.html
Copyright © 2011-2022 走看看