• python--socket编程


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

    所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

    #--基于TCP/IP 套接字 服务端的简单实例

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

    服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束

    from socket import socket
    ip_port=("127.0.0.1",8080)
    buf_size=1024
    
    tcp_server=socket(AF_INET,SOCK_STREAM)
    tcp_server.bind(ip_port)
    tcp_server.listen(5)
    conn,addr=tcp_server.accpet()
    msg=conn.recv(buf_size)
    print("收到客户端发送的消息",msg.decode("utf-8"))
    conn.send(msg.upper())
    conn.close()
    tcp_server.close()
    tcp_server服务端

    #基于TCP/IP 套接字 客户端的简单实例

    from socket import *
    ip_port=("127.0.0.1",8080)
    buf_size=1024
    tcp_client=socket(AF_INET,SOCK_STRAM)
    tcp_client.connect(ip_port)
    tcp_client.send("hello".encode("utf-8"))
    data=client.recv(buf_size)
    print("客户端收到消息",data.decode("utf-8"))
    tcp.client.close()
    tcp_client客户端

    #基于UDP的套接字服务端示例

    #udp是无链接的,先启动哪一端都不会报错

    from socket import *
    ip_port=("127.0.0.1",8080)
    buf_size=1024
    udp_server=socket(AF_INET,SOCK_DGRAM)
    udp_server.bind(ip_port)
    msg,addr=udp_server.recvfrom(buf_size)
    print("服务端收到消息",msg.decode("utf-8"))
    udp_server.sendto(msg.upper(),addr)
    udp_server服务端

    #基于UDP的套接字客户端示例

    from socket import *
    ip_port=("127.0.0.1",8080)
    buf_size=1024
    udp_client=socket(AF_INET,SOCK_DRGAM)
    udp_client.sendto("hello".encode("utf-8"),ip_port)
    data,addr=udp_client.recvfrom(bufsize)
    print(data.decode("utf-8"))
    udp_client客户端
    如果我失败了,至少我尝试过,不会因为痛失机会而后悔
  • 相关阅读:
    node.js的querystring模块
    jsonp的作用
    js开发性能(一)
    express创建第一个web应用
    安装express
    关于【歧视】的一点事
    在统计报表中用到的sql语法记录
    北京民航总医院杀医事件
    那些自杀的人似乎更有勇气
    河南人究竟偷了多少井盖?
  • 原文地址:https://www.cnblogs.com/tangcode/p/11534052.html
Copyright © 2020-2023  润新知