#! /usr/bin/python
# -\*- coding:UTF-8 -\*-
import socket

#客户端程序


def main():
    s = socket.socket()
    host = '192.168.0.101'#你要连接谁的ip地址
    port = 12345
    s.connect((host,port))#连接服务器
    print(s.recv(1024).decode("utf-8"))  # 接受信息
    msg = input("您要发送的信息:")
    s.send(msg.encode("utf-8"))#发送信息
    s.close()


    pass

if __name__ == '\_\_main\_\_':
    main()

运行结果为:
server.py

对方的地址是: ('192.168.0.101', 62258)
hello

Process finished with exit code 0

client.py

Welcome
您要发送的信息:hello

Process finished with exit code 0

三、支持命令的端口扫描器

print(sys.argv)#输出所有的参数
print(sys.argv[0]) # 输出第一个参数

以下是一个简单的Python端口扫描器示例:

import socket

target_host = input("Enter the target host IP address: ")
start_port = int(input("Enter the starting port number: "))
end_port = int(input("Enter the ending port number: "))

def port\_scan(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(1)
    result = sock.connect_ex((target_host, port))
    if result == 0:
        print("Port {}: Open".format(port))
    else:
        print("Port {}: Closed".format(port))
    sock.close()

for port in range(start_port, end_port+1):
    port_scan(port)

使用时,输入要扫描的目标主机IP地址、起始端口号和结束端口号,程序会对这些端口进行扫描,输出端口状态。

python ffmpeg 扫光_python ffmpeg 扫光

实例

#! /usr/bin/python
# -\*-coding: UTF-8 -\*-

import socket
import sys


# 判断端口是否开放
def is\_open(ip, port):
    s = socket.socket()
    try:
        s.connect(ip, port)
        return True
    except:
        return False


# 默认扫描的函数
def scan(ip, portlist):
    for x in portlist:
        if is_open(ip, x):
            print("%s的主机 %s 端口 open"%(ip,x))
        else:
            print("%s的主机 %s 端口 close"%(ip,x))
    pass

#范围扫描
def rscan(ip,r,e):
    for x in range(int(r),int(e)):
        if is_open(ip,x):
            print("%s的主机 %s 端口 open"%(ip,x))
        else:
            print("%s的主机 %s 端口 close"%(ip,x))
    pass



def main():
    defaultport = ['145','139','445','1433','3306','3389','6379','80','8080','7001','22','21','23','25']

    #寻求帮助或者看版本
    if len(sys.argv)==2:

        if sys.argv[1]=='--help' or sys.argv[1]=='-h':
            print("python test1.py [ip] ----默认扫描")
            print("python test1.py [ip] [port:80,81,82或者port:80-90] ----自定义端口扫描")

        elif sys.argv[1]=='--version' or sys.argv[1]=='-v':
            print("程序版本为1.0")
            sys.exit()

        else:
            #若使用默认扫描:python test1.py 127.0.0.1
            scan(sys.argv[1],defaultport)

    #参数有逗号的情况
    elif len(sys.argv)==3:
        if ',' in sys.argv[2]:
            port_1 = sys.argv[2]
            port_1 = port_1.split(',')
            a = []
            for x in port_1:
                a.append(int(x))

            scan(sys.argv[1],a)

        #带‘-’范围扫描的情况
        elif '-' in sys.argv[2]:
            rport = sys.argv[2]
            rport = rport.split('-')
            r = rport[0]
            e = rport[1]

            rscan(sys.argv[1],r,e)

    pass


if __name__ == '\_\_main\_\_':
    main()

上述代码可以实现一些简易扫描器功能,但是比较麻烦和冗余
所以我们也可以考虑使用optparseoptparse是Python标准库中的一个模块,用于在命令行界面中解析命令行选项和参数。它提供了一种轻松创建符合Unix/Posix命令行界面标准的命令行选项。
optparse模块可以使命令行工具更加易用和灵活,同时还可以提高程序员的效率。

以下是一个简单的optparse的例子:

import optparse

parser = optparse.OptionParser()
parser.add\_option("-f", "--file", dest="filename",
                  help="read data from FILENAME")
parser.add\_option("-q", "--quiet",
                  action="store\_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

(options, args) = parser.parse\_args()

if options.verbose:
    print("reading data from", options.filename)

使用optparse模块,我们可以将命令行中的选项和参数解析为相应的Python变量,并在程序中进行使用。

对于扫描器的实现,我们可以将扫描器所需的选项和参数作为optparse模块中的选项和参数,然后在程序中进行相应的处理。例如,我们可以添加以下选项:

-h, --help 显示帮助信息
-t, --target 指定扫描目标IP地址或网段
-p, --port 指定扫描目标端口号
-s, --speed 指定扫描速度
然后在程序中通过optparse模块解析相应的选项和参数,并进行扫描操作。

测试实例

#! /usr/bin/python
# -\*-coding: UTF-8 -\*-

from optparse import OptionParser


def main():

    usage = "python xxx.py -f <filename> -i <address>" #帮助
    parse = OptionParser(usage=usage)#添加usage方法,xx.py -h 就会出现上面的帮助
    parse.add_option("-f","--file",type="string",dest="filename",help="your filename here")
    parse.add_option("-i","--ipaddress",type="string",dest="ipadd",help="your ip address here")

    (option,args) = parse.parse_args()#获取选项和参数进行赋值

    print(option.filename)
    print(option.ipadd)



    pass

if __name__=='\_\_main\_\_':
    main()

运行结果简单测试:

python ffmpeg 扫光_python ffmpeg 扫光_02