zoukankan      html  css  js  c++  java
  • Python中的socket模块

    Python网络编程离不开socket模块

    1. socket模块的简单使用,以开发一个简单的命令行工具为例,如下

      1.1 socket client 端代码

     1 # -*- coding:utf-8 -*-
     2 # Author:Wong Du
     3 
     4 import socket
     5 
     6 # 创建一个socket对象
     7 client = socket.socket()
     8 # 与服务器端建立连接
     9 client.connect( ('localhost', 9494) )
    10 
    11 
    12 while True:
    13     # 获取用户输入内容
    14     cli_send = input(">>: ").strip()
    15     # 判断用户输入是否为空
    16     if len(cli_send) == 0:
    17         continue
    18 
    19     # 给服务器端发送数据,必须为bytes类型
    20     client.send(cli_send.encode(encoding="utf-8"))
    21 
    22     # 接收服务器端返回的数据, 102400为接收数据的大小
    23     data = client.recv(102400)
    24     # 查看接收到的数据
    25     print(data.decode())
    26 
    27 # 关闭连接
    28 client.close()

      1.2 socket server 端代码

    # -*- coding:utf-8 -*-
    # Author:Wong Du
    
    import os
    import socket
    
    # 创建一个socket连接
    server = socket.socket()
    # 绑定相应的IP和端口号
    server.bind( ('localhost', 9494) )
    # 开始监听, 5为监听最大连接数
    server.listen(5)
    print("我要开始监听了~~")
    # 等待请求连接,卡住;conn为连接对象,addr为连接身份
    print("正在等待客户端请求连接~~")
    conn, addr = server.accept()
    print("接收到客户端连接,身份是: ", addr)
    
    while True:
        # 接收客户端发来的命令,1024为接收数据的大小
        data = conn.recv(1024)
        # 执行命令并接收命令返回结果
        res = os.popen(data.decode()).read()
        # 如命令无返回结果
        if not res:
            res = 'Invalid command..'
    
        # 将命令返回结果发给客户端,数据必须是bytes类型
        conn.send(res.encode(encoding='utf-8'))
    
    
    # 关闭连接
    server.close()
  • 相关阅读:
    258 第七篇:Django-组件-ContentType组件
    257 第七篇:Django-组件-Auth模块
    256 第七篇:Django-组件-中间件组件
    255 第七篇:Django-组件-cookie与session组件
    254 第七篇:Django-组件-forms组件
    253 第七篇:Django-组件-分页器组件
    第二节:2_委托入门笔记
    EF-调用sql进行操作
    1.1常见的错误---登录(菜鸟常遇错误)
    EF-Lamdba
  • 原文地址:https://www.cnblogs.com/Caiyundo/p/9481970.html
Copyright © 2011-2022 走看看