socket服务端

    1. # 服务端
    2. # 导入socket包
    3. from socket import *
    4. # 设置ip地址 绑定本机回环地址
    5. IP = '127.0.0.1'
    6. # 端口号
    7. PORT = 50000
    8. # 定义一次从socket缓冲区最多读入512个字节数据
    9. BUFLEN = 512
    10. # 实例化一个socket对象
    11. # 参数AF_INET表示该socket网络层使用IP协议
    12. # 参数SOCK_STREAM表示该socket传输层使用tcp协议
    13. listenSocket = socket(AF_INET, SOCK_STREAM)
    14. # socket绑定地址和端口
    15. # 设置服务端的地址和端口
    16. listenSocket.bind((IP, PORT))
    17. # 使socket处于监听状态,等待客户端的连接请求
    18. # 参数5表示 最多接收多少个等待连接的客户端
    19. listenSocket.listen(5)
    20. # 当连接成功时发送的参数
    21. print(f'服务端启动成功,在{PORT}端口等待客户端连接....')
    22. # 只有接收到客户端的请求才能触发以下代码
    23. #
    24. dataSocket, addr = listenSocket.accept() # 此处返回的是元祖
    25. print('接受一个客户端连接:', addr)
    26. while True:
    27. # 尝试读取对方发送的信息
    28. # BUFLEN 指定从接收缓冲里最多读取多少字节
    29. recved = dataSocket.recv(BUFLEN)
    30. # 如果返回空bytes 表示对方关闭了连接
    31. # 退出循环 结束消息收发
    32. if not recved:
    33. break
    34. # 读取的字节数据是bytes类型,需要解码为字符串
    35. # 虽然我们发送的是字符串,但发送出去的都是字节,需要进行转码
    36. info = recved.decode()
    37. print(f'收到对方信息,{info}')
    38. # 发送的数据类型必须是bytes,所以要编码
    39. dataSocket.send(f'服务端接收到了信息 {info}'.encode())
    40. dataSocket.close()
    41. listenSocket.close()

    socket客户端

    1. from socket import *
    2. IP = '127.0.0.1'
    3. SERVER_PORT = 50000
    4. BUFLEN = 512
    5. # 实例化一个socket对象,指明协议
    6. dataSocket = socket(AF_INET, SOCK_STREAM)
    7. # 连接服务端
    8. dataSocket.connect((IP, SERVER_PORT))
    9. while True:
    10. # input 接收字符串类型数据
    11. toSend = input('>> ')
    12. if toSend == 'exit':
    13. break
    14. # 将字符串数据转换为字节 并且发送到服务端
    15. dataSocket.send(toSend.encode())
    16. # 读取对方发送的信息 从缓存中读取字节
    17. recved = dataSocket.recv(BUFLEN)
    18. # 如果返回为空byte 表示对方关闭了连接
    19. if not recved:
    20. break
    21. print(recved.decode()) # 打印读取的信息
    22. dataSocket.close()