python模块——socket
实例一、
server:
#socket套接字(IP + 端口号)(qq,wechat 发送接收消息依靠socket模块),cs架构
import socket
server = socket.socket()
#实例化出一个socket对象,默认tcp/ip协议
server.bind(('127.0.0.1',8888))
#绑定客户端,VIP,元组形式,('')相当于('0.0.0.0')
#声明出client端该访问那个地址和端口号
server.listen(5)
#半连接池,listen(5)最大连接数
print('wait telephone..........')
conn,addr = server.accept()
#监听是否有客户端来连接
#运行会产生两个返回值:连接信息,客户端信息
print('call telephone............')
data = conn.recv(10240)
#接收到的信息。10240:最大接受的字节,随便写'
print(data.decode('utf-8'))
client:
importsocket
client=socket.socket()
client.connect(('127.0.0.1',8888))
cmd=input('==>:')
client.send(cmd.encode('utf-8'))
结果:


实例2、
利用subprocess模块和socket模块在其他主机执行cmd命令:
server:
import socket,subprocess
server = socket.socket()
server.bind(('127.0.0.1',8888))
server.listen(5)
print('wait telephone..........')
conn,addr = server.accept()
print('call telephone............')
while True:
cmd = conn.recv(10240)
process = subprocess.Popen(cmd.decode('utf-8'),
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
stdout=process.stdout.read()
stderr=process.stderr.read()
result = stdout+stderr
conn.send(result) client:
import socket
client = socket.socket()
client.connect(('127.0.0.1',8888))
while True:
cmd = input('==>:').strip()
if cmd:
client.send(cmd.encode('utf-8'))
else:
continue
result = client.recv(10240)
print(result.decode('gbk'))
结果:

实例3、
简易聊天软件(首先利用socket建立两台机器的通信,再利用多线程让发送消息和接收消息同时运行。)
server:
import socket,threading
server = socket.socket()
server.bind(('127.0.0.1',8888))
server.listen(5)
print('wait telephone..........')
conn,addr = server.accept()
print('call telephone............')
def recv():
while True:
data = conn.recv(1024)
print(data.decode('utf-8'))
def send():
while True:
cmd = input('==>:')
conn.send(cmd.encode('utf-8'))
t1 = threading.Thread(target=recv)
t2 = threading.Thread(target=send)
t1.start()
t2.start() client:
import socket,threading
client = socket.socket()
client.connect(('127.0.0.1',8888))
def send():
while True:
cmd = input('==>:').strip()
client.send(cmd.encode('utf-8'))
def recv():
while True:
data = client.recv(1024)
print(data.decode('gbk')) t1 = threading.Thread(target=recv)
t2 = threading.Thread(target=send)
t1.start()
t2.start()
结果:


实例4、
检查IP地址和端口号通不通:
import socket
hosts = ['192.168.254.12:80','192.168.254.12:3306','2.2.2.2:80','3.3.3.3:80']
socket.setdefaulttimeout(1) for host in hosts:
ip = host.split(':')[0]
port = host.split(':')[1]
server = socket.socket()
res = server.connect_ex((ip,int(port)))
# 如果res为0代表ok,不为0代表连接失败
if res == 0:
print('%s is ok' % ip)
else:
print('%s is 不ok' % ip) import socket
socket.setdefaulttimeout(1) #超时时间
host_list = ['192.168.4.145:5555','192.168.4.146:555','192.168.4.147:5555','192.168.31.199:445']
for info in host_list:
server = socket.socket()
ip = re.compile('(.*?):(.*)').search(info).group(1)
port = re.compile('(.*?):(.*)').search(info).group(2)
res = server.connect_ex((ip, int(port)))
if res == 0:
print('%s--%s端口正常' % (ip, port))
else:
print('%s--%s端口异常' % (ip, port))
python模块——socket的更多相关文章
- Python模块 Socket
一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...
- python模块—socket
创建套接字: socket.socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字. 1. socket类型: socket.AF ...
- python模块——socket (实现简单的C/S架构端通信操作CMD)
# 服务端代码#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" import socket impo ...
- python模块之socket
43.python模块之socket: Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式 UDP通讯: Server: import socket port=8081 ...
- 老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具
老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具 poptest是业内唯一的测试开发工程师培训机构,测试开发工程师主要是为测试服务开发测试工具,在工作中要求你做网络级别的安全 ...
- python中socket模块详解
socket模块简介 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常被叫做"套接字",用于描述IP地址和端口,是一个通信 ...
- Python基于socket模块实现UDP通信功能示例
Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import ...
- 使用 Python 的 Socket 模块构建一个 UDP 扫描工具
译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...
- Python底层socket库
Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...
随机推荐
- conversion function——转换函数
类型转换函数 与 explicit关键字 1.类型转换函数 在C++中,可以使用构造函数将一个指定类型的数据转换为类的对象,也可以使用类型转换函数 (type conversion function) ...
- 《Java编程思想》——初始化与清理(一)读书笔记
第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记
- Android Studio 模拟器Intel 加速
Starting emulator for AVD 'Phone1'emulator: ERROR: x86 emulation currently requires hardware acceler ...
- CentOS6.5下搭建文件共享服务(Samba)
Samba服务: 本内容为samba服务学习者提供参考 案例描述: 某公司的管理员需要搭建SAMBA服务器,IP地址及允许的访问网段自定义.SAMBA服务器的安全级别为user级,所在工作组为WORK ...
- windows 抓hash获取管理员密码
webshell 找能执行权限的目录上传 C:\Windows\System32\config\sam 内有windows 密码 利用工具把密码抓出来 samcopy 直接抓取 GetHASHES.e ...
- java学习-IDEA运行java程序报错
问题1: 解决办法:依次执行如下两步 问题2: 解决办法:如下两项版本应保持一致
- 移动端真机调试--weinre
一.安装 首先确保你的电脑上有node环境,然后使用cnpm或npm 安装 windows下 npm install weinre -g --registry=https://registry.npm ...
- ElasticSearch安装及使用
ElasticSearch安装及使用 ELK由Elasticsearch.Logstash和Kibana三部分组件组成. Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置 ...
- linux "No space left on device" 磁盘空间解决办法
某年某月某日某时,某人在工作中设置crontab定时任务规则保存时,提示“No space left on device”,此时用df -h检查磁盘,发现还有剩余空间.请问是什么原因及如何排查?什么会 ...
- 利用SpringBoot+Logback手写一个简单的链路追踪
目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...