• 网络编程之协议


    四.套接字(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() # 关闭客户套接字

    问题:有的同学在重启服务端时可能会遇到   

    #加入一条socket配置,重用ip和端口
    import socket
    from socket import SOL_SOCKET,SO_REUSEADDR
    sk = socket.socket()
    sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加
    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() #关闭服务器套接字(可选)

    基于UDP协议的socket

    简单使用                                                                                               

    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.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)
     
    认真做一件事,并将之完全学会掌握为止!
  • 相关阅读:
    java 二分查找计算时间复杂度
    idea导出javadoc文档
    ext常用属性
    hibernate执行过程
    分布式架构初探
    web中几个context上下文的理解
    网上书城项目总结(servlet_jsp+javaBean)
    javaweb面试题01
    数据源和数据库连接池
    数据结构之必需知
  • 原文地址:https://www.cnblogs.com/wr13640959765/p/9334809.html
Copyright © 2020-2023  润新知