实例一、

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的更多相关文章

  1. Python模块 Socket

    一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...

  2. python模块—socket

    创建套接字: socket.socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字. 1. socket类型: socket.AF ...

  3. python模块——socket (实现简单的C/S架构端通信操作CMD)

    # 服务端代码#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" import socket impo ...

  4. python模块之socket

    43.python模块之socket:       Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式 UDP通讯: Server: import socket port=8081 ...

  5. 老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具

    老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具 poptest是业内唯一的测试开发工程师培训机构,测试开发工程师主要是为测试服务开发测试工具,在工作中要求你做网络级别的安全 ...

  6. python中socket模块详解

    socket模块简介 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常被叫做"套接字",用于描述IP地址和端口,是一个通信 ...

  7. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  8. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  9. Python底层socket库

    Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...

随机推荐

  1. .NET Core 3.0 ,WTM 2.3.9发布

    .Net Core 3.0已经来了,WTM怎么可以落后呢.最新发布的WTM2.3.9版本已经支持.Net Core 3.0啦,现在在线生成项目的时候可以选择2.2和3.0两个版本.小伙伴们快来体验吧. ...

  2. Javascript实现10种排序算法

    1.冒泡排序: 比较相邻的两个数,如果前一个数大于后一个数,就将这两个数换位置.每一次遍历都会将本次遍历最大的数冒泡到最后.为了将n个数排好序,需要n-1次遍历.如果某次遍历中,没有调整任何两个相邻的 ...

  3. Vue核心之数据劫持

    前瞻 当前前端界空前繁荣,各种框架横空出世,包括各类mvvm框架横行霸道,比如Anglar,Regular,Vue,React等等,它们最大的优点就是可以实现数据绑定,再也不需要手动进行DOM操作了, ...

  4. [NOIp2018] luogu P5020 货币系统

    还在补暑假作业. 题目描述 你有一个由 NNN 种面值的货币组成的货币系统.定义两个货币系统等价,当且仅当 ∀x∈N∗\forall x\in\N^*∀x∈N∗ 要么同时能被两个货币系统表示,要么同时 ...

  5. [LUOGU1437] 敲砖块

    题目描述 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示. 14 15 4 3 23 33 33 7 ...

  6. opencv::轮廓周围绘制矩形框和圆形框

    基于RDP算法实现,目的是减少多边形轮廓点数 approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool ...

  7. springboot使用idea打jar包

    1.如果有本地jar包依赖,放到/WEB-INF/lib下,用system类型配到pom中 <dependency> <groupId>org.wechat</group ...

  8. linux+jenkins+postman持续集成

    环境搭建:linux上安装newman,部署好jenkins linux上war包方式安装Jenkins 以下实现jenkins上执行postman测试脚本: 1.新建一个自动风格的job 2.构建- ...

  9. Mysql高手系列 - 第26篇:聊聊如何使用mysql实现分布式锁

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第26篇. 本篇我们使用my ...

  10. 解决html连续字符或数字换行的问题

    word-break: break-all; word-wrap:break-word; 强制换行