• 网络编程杂项高级


    tcp聊天,
    #server端实现:

    import socket
    sk=socket.socket() # 实例化socket对象
    address=("0.0.0.0",8000) #设置端口
    sk.bind(address) # 绑定IP地址和端口
    sk.listen(5) #监听
    while True:
    conn,addr=sk.accept()#conn接受数据,addr获取客户端ip地址
    while True: # 这个循环来实现相互之间聊天的逻辑
    try: #win被中断连接就会异常 linux不会
    data=conn.recv(1024) #定义1024字节接受数据,这里的数据只能是bytes类型的数据,否则报错;
    if data: # 假如客户端传递数据过来时
    print("-->",str(data,"utf-8")) # 打印客户端传递过来的数据,需要从bytes类型数据解码成unicode类型的数据
    data=bytes(input(">>>"),"utf-8") # 接收输入的数据并转换成bytes类型的数据
    conn.send(data) # 将bytes类型的数据发送给客户端
    else: # 否则客户端连接的对象,当客户端正常退出,执行了sk.close()时将不会发送数据到服务端
    conn.close() # 这时关闭这个conn对象并退出当前循环等待下一个客户端对象来连接
    break
    except ConnectionResetError as e: # 捕获到异常之后,打印异常出来并退出循环等待下一个客户端连接
    print(e)
    break
    #client端实现
    import socket # 导入socket模块
    sk=socket.socket() # 实例化客户端对象
    address=("127.0.0.1",8000) # 设置客户端需要连接的服务端IP地址以及端口
    sk.connect(address) # 连接服务端的IP地址以及端口
    while True: # 循环实现对话
    data=input(">>>").strip() # 获取用户输入的数据
    if data=="exit": # 如果输入的是exit 关闭该对象并退出程序
    sk.close() # 关闭对象
    break # 退出循环
    sk.send(bytes(data,"utf-8")) # 发送刚输入的数据,要先转换成bytes类型的数据
    data=str(sk.recv(1024),"utf-8") # 接收服务端发送的数据,并将其转换成unicode数据类型
    print("-->",data) # 打印服务端传输过来的数据
  • 相关阅读:
    八、分组
    七、select使用
    六、SQL基础应用
    五、修改MySQL密码
    side Effect
    js函数式编程
    React生命周期
    Portals
    git使用技巧
    函数式编程
  • 原文地址:https://www.cnblogs.com/lc1013/p/10216497.html
Copyright © 2020-2023  润新知