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 ...
随机推荐
- [转] Java 无界阻塞队列 DelayQueue 入门实战
原文出处:http://cmsblogs.com/ 『chenssy』 DelayQueue是一个支持延时获取元素的无界阻塞队列.里面的元素全部都是"可延期"的元素,列头的元素是最 ...
- Selenium+PhantomJS使用时报错原因
运行下面代码:'''PhantomJS运用''' from selenium import webdriverimport time # 通过keys模拟键盘from selenium.webdriv ...
- Android仿美团地址选择
最近做了这个功能,分享一下,用的是百度地图api,和美团外卖的地址选择界面差不多,也就是可以搜索或者滑动地图展示地址列表给用户选择,看下效果图先. 文章重点 1.展示地图并定位到“我”的位置2.滑动地 ...
- Java内存模型总结
Java内存模型 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(J ...
- Validator 常用注解
说明 Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等.那么在spring boot怎么使用这么强大的校验框架呢. 常用 @null 验 ...
- 记一次EF Core DBContext在Action委托中GC异常的问题.
今天在开发过程中发现.在SaveChanges的时候偶尔会抛出异常:Cannot access a disposed object. A common cause of this error is d ...
- MS09-012 PR提权
漏洞编号:MS09-012 披露日期: 2009/4/14 受影响的操作系统:Windows 2008 x64 x86;XP;Server 2003 sp1 sp2; 测试系统:windows 20 ...
- Git & Github 使用教程【1】入门篇
Github教程 1-1 版本管理工具简介 主要作用:备份文件.记录历史.回到过去.多端共享.独挡一面.团队协作 2-1 版本管理工具发展历史 3-1 Git下载和安装[略] 3-2 linux下安装 ...
- 史上最骚最全最详细的IO流教程,没有之一!
目录 1.告白IO流的四点明确 2.File类 1.1 File概述 1.2 构造方法 1.3 常用方法 1.3.1 获取功能的方法 1.3.2 绝对路径和相对路径 1.3.3判断功能的方法 1.3. ...
- Java IO_002.InputStream与OutputStream--字节流对数据的操作(读取与写入)
Java IO之FileInputStream与FileOutputStream对象常用操作 涉及到文件(非文件夹)内容的操作,除了要用到File(见之前文章),另外就必须用到输入流或输出流. 输入流 ...