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()

 

posted @ 2018-08-15 16:00  糕事情  阅读(178)  评论(0编辑  收藏  举报