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

原文地址:https://www.cnblogs.com/Caiyundo/p/9481970.html

时间: 2024-08-01 05:36:01

Python中的socket模块的相关文章

Python中的socket 模块

Python 提供了两个基本的 socket 模块.第一个是 Socket,它提供了标准的 BSD Sockets API.第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 下面先讲的是Socket模块功能 1.Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字.socket类型描述socket.AF_UNIX只能够用于单一的Unix系统进程间通信so

Python 中的 socket 模块

本文参考PYTHON 网络编程 第一章 import sockethelp(socket) Functions:    socket() -- create a new socket object    socketpair() -- create a pair of new socket objects [*]    fromfd() -- create a socket object from an open file descriptor [*]    gethostname() -- r

python 中的socket

python中利用socket模块来实现对各种底层通讯的封装,支持tcp/udp协议,为编制c/s类的程序提供了便利. 最常见的用法: 如ftp_server: 1 import socketserver 2 class Mysocketserver(socketserver.BaseRequestHandler): 3 def handle(self): 4 while True: 5 try: 6 self.data=self.request.recv(1024).strip() 7 pri

浅析Python中的struct模块

最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言的人,一定会知道struct结构体在c语言中的作用,它定义了一种结构,里面包含不同类型的数据(int,char,bool等等),方便对某一结构对象进行处理.而在网络通信当中,大多传递的数据是以二进制流(binary data)存在的.当传递字符串时,不必担心太多的问题,而当传递诸如int.char之

python中的select模块

介绍: Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue方法(freeBSD系统) select方法: 进程指定内核监听哪些文件描述符(最多监听1024个fd)的哪些事件,当没有文件描述符事件发生时,进程被阻塞:当一个或者多个文件描述符事件发生时,进程被唤醒. 当我们调用select()时: 1 上下文切换转换为内核态 2 将fd从用户空间复制到内

Python中的random模块,来自于Capricorn的实验室

Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniform random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限.如果a > b,则生成的随机数n: a <= n <= b.如果 a <

python中查看可用模块

1.这种方式的问题是,只列出当前import进上下文的模块. 进入python命令行.输入以下代码: >>>import sys >>>sys.modules 2.在python命令行下输入: >>>help() help>modulespython中查看可用模块,布布扣,bubuko.com

python中动态导入模块

如果导入的模块不存在,Python解释器会报 ImportError 错误: >>> import something Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something 有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了Strin

Python中的random模块

Python中的random模块 (转载自http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html) Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniform random.uniform的函数原型为:random.uniform(a, b),