zoukankan      html  css  js  c++  java
  • 网络编程杂项高级

    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) # 打印服务端传输过来的数据
  • 相关阅读:
    常用搜索指令
    chrome浏览器常用快捷键
    倒排文档
    hdu4570Multi-bit Trie (间隙DP)
    HTTP工作原理
    腾讯和58都市“聘请”秘诀是什么?
    Atitit。团队建设--管理最佳实践--如何留住关键人才,防止人才外流 ??
    于Eclipse传导C/C++配置方法开发(20140721新)
    通过京东淘宝的技术发展和技术演进,探索未来的技术和体系结构
    C++ Primer 学习笔记_41_STL实践与分析(15)--先来看看算法【下一个】
  • 原文地址:https://www.cnblogs.com/lc1013/p/10216497.html
Copyright © 2011-2022 走看看