• Python中套接字实现服务端和客户端3-3


    3 创建客户端的步骤

    创建客户端的步骤如图5所示。

    图5 创建客户端的步骤

    从图5可以看出,对于客户端来说,首先创建套接字,之后通过创建的套接字去连接服务端,如果连接成功,则继续通过该套接字向服务端发送数据,最后关闭套接字。

    3.1 创建套接字

    客户端创建套接字的方法与服务端相同,代码如下所示。

    s = socket.socket()

    3.2 连接服务端

    通过connect()方法连接服务端,该方法的格式如下所示。

    socket.connect(address)

    其中,参数address是服务器的信息,包括IP地址和端口号。连接服务器的代码如下所示。

    1. SERVER = '192.168.147.128'
    2. PORT = 12345
    3. s.connect((SERVER, PORT))

    其中,SERVER表示服务器的IP地址,PORT表示服务器监听的端口号,最后将这两个变量组合成元组作为connect()方法的参数。如果不能成功连接服务器,connect()方法会间隔一段时间后再次尝试连接,此时代码会阻塞等待connect()的再次尝试,当尝试了一定次数后仍无法连接服务器,则connect()方法会抛出TimeoutError,即连接超时异常。如果成功连接了服务端,则代码会继续向下运行。

    3.3 发送数据

    成功连接了服务端之后,通过sendall()方法向服务端发送数据。该方法的格式如下所示。

    socket.sendall(bytes[, flags])

    其中,第一个参数bytes表示要发送的数据,该数据必须是字节类型;第二个参数flags是可选参数,表示指定了发送数据时的方式,默认值是0。通过sendall()方法发送数据的代码如下所示。

    s.sendall(b'Hello Server!')

    3.4 关闭套接字

    在发送完数据之后,可以通过close()方法关闭套接字。

    4 完整代码

    4.1 服务端完整代码

    1. import socket
    2. HOST = ''
    3. PORT = 12345
    4. WORDS = b'Hello Client!'
    5. s = socket.socket()
    6. s.bind((HOST, PORT))
    7. s.listen(1)
    8. print('Server is starting...')
    9. conn, addr = s.accept()
    10. print('Connected by', addr)
    11. data = conn.recv(1024)
    12. print('Received:', data)
    13. conn.close()
    14. s.close()    
    15. print('Server closed!')

    4.2 客户端完整代码

    1. import socket
    2. SERVER = '192.168.147.128'
    3. PORT = 12345
    4. s = socket.socket()
    5. s.connect((SERVER, PORT))
    6. s.sendall(b'Hello Server!')
    7. s.close()

  • 相关阅读:
    【问题解决】Maven密码加密
    【AGC】典型问题FAQ 6
    switch选择结构
    【Vue 开发实战】实战篇 # 44:如何高效地构建打包发布
    掌握C语言文件操作:从入门到精通的完整指南!
    复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
    ArrayList与List的层级关系及ArrayList解析
    【infiniband】 MAD、 uMAD、Verbs、RDMACM
    C++ 四大强制类型转换
    Nginx优化与防盗链
  • 原文地址:https://blog.csdn.net/hou09tian/article/details/133757980