Android机顶盒网络地址端口连通性测试

2023-11-20

Android机顶盒网络地址端口连通性测试

一般我们使用如下三种方式进行测试,前一种不满足则执行下一种:

  • 1、外网可以访问时可以使用telnet直接进行ip及端口测试;
  • 2、外网无法访问只有机顶盒可以访问时可以使用busybox telnet进行测试;
  • 3、当外网无法访问且机顶盒不具备busybox telnet时可以使用我们开发的C工具进行测试,目前已经交叉编译适配机顶盒;

1、直接telnet

telnet host port

如图所示:
在这里插入图片描述

2、busybox telnet

busybox telnet ip port

在这里插入图片描述
似乎是不支持域名的:
在这里插入图片描述

3、测试工具

在网上找了一个,简单的C写的socket通信,使用select进行监听:
https://blog.csdn.net/pipalcn/article/details/83940054

#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
//#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <netdb.h>

#define TIMEOUT 5

/*
FileName:testConn.c
functions:test host:port which specified whether is alive.
call:testConn hostname port
return values:
0 :connected.
1:arguments err.
2:port number illegal.
3:gethostname err.
4:network setup err.
5:Connect server timeout.
*/

int main(int argc, char **argv)
{
    if (argc != 3)
    {
        printf("error:Usage: %s host port.\nExample: %s 192.168.0.1 21\n", argv[0], argv[0]);
        exit(1);
    }

    int portnumber = 0;
    if ((portnumber = atoi(argv[2])) < 0)
    {
        fprintf(stderr, "error:port number[%s] is illegal.\n", argv[0]);
        exit(2);
    }

    struct hostent *host;
    if ((host = gethostbyname(argv[1])) == NULL)
    {
        fprintf(stderr, "error:Gethostname error\n");
        exit(3);
    }

    int sockfd, flags, res;
    struct sockaddr_in servaddr;
    fd_set fdr, fdw;
    struct timeval timeout;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
    {
        perror("error:Netwrok error...\n");
        return 4;
    }

    /* set socket fd noblock */
    if ((flags = fcntl(sockfd, F_GETFL, 0)) < 0)
    {
        perror("error:Netwrok error...\n");
        close(sockfd);
        return 4;
    }

    if (fcntl(sockfd, F_SETFL, flags | O_NONBLOCK) < 0)
    {
        perror("error:Network error...\n");
        close(sockfd);
        return 4;
    }

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    //inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
    servaddr.sin_addr = *((struct in_addr *)host->h_addr);
    servaddr.sin_port = htons(portnumber);

    if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) != 0)
    {
        if (errno != EINPROGRESS)
        { // EINPROGRESS
            perror("error:Network err....\n");
            close(sockfd);
            return 4;
        }
    }
    else
    {
        printf("Connected\n");
        return 0;
    }

    FD_ZERO(&fdr);
    FD_ZERO(&fdw);
    FD_SET(sockfd, &fdr);
    FD_SET(sockfd, &fdw);

    timeout.tv_sec = TIMEOUT;
    timeout.tv_usec = 0;

    res = select(sockfd + 1, &fdr, &fdw, NULL, &timeout);
    if (res < 0)
    {
        perror("error:Network error...\n");
        close(sockfd);
        return 4;
    }
    if (res == 0)
    {
        printf("error:Connect server timeout\n");
        close(sockfd);
        return 5;
    }
    if (res == 1)
    {
        if (FD_ISSET(sockfd, &fdw))
        {
            printf("Connected\n");
            close(sockfd);
            return 0;
        }
    }
    /* Not necessary */
    if (res == 2)
    {
        printf("error:Connect server timeout\n");
        close(sockfd);
        return 5;
    }

    printf("error:Connect server timeout\n");
    close(sockfd);
    return 5;
}

之后我们将其交叉编译后放到Android机顶盒中运行即可:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android机顶盒网络地址端口连通性测试 的相关文章

  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • Fortran 中的共享库,最小示例不起作用

    我试图了解如何在 Linux 下的 Fortran 中动态创建和链接共享库 我有两个文件 第一个 liblol f90 看起来像这样 subroutine func print lol end subroutine func 我用它编译gf
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 了解 Linux oom-killer 日志

    我的应用程序被 oom killer 杀死了 它是在实时 USB 上运行的 Ubuntu 11 10 无需交换 PC 具有 1 Gig 的 RAM 唯一运行的应用程序 除了所有内置的 Ubuntu 东西 是我的程序 flasherav 请注
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出

随机推荐

  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • [python]bokeh学习总结——QuickStart

    bokeh是python中一款基于网页的画图工具库 画出的图像以html格式保存 一个简单的例子 from bokeh plotting import figure output file show output file patch ht
  • 电子信息工程电子信息毕设分享100例(一)

    单片机毕业设计项目分享系列 这里是DD学长 单片机毕业设计及享100例系列的第一篇 目的是分享高质量的毕设作品给大家 包含全面内容 源码 原理图 PCB 实物演示 论文 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的单片机项目缺少
  • STM32之音频数据的Flash读取与DAC播放

    文章目录 一 STM32103之内部Flash原理 1 Flash介绍 2 Flash的组成 3 STM32内部框架图 二 SD卡的读写 1 实验过程 2 查看hello txt 3 从SD卡里读出数据 三 Flash地址空间的数据读取 1
  • 说说ERP软件的系统设计--开源软件诞生8

    赤龙ERP系统设计篇 第8篇 用日志记录 开源软件 的诞生 赤龙 ERP 开源地址 点亮星标 感谢支持 与开发者交流 kzca2000 码云 https gitee com redragon redragon erp GitHub http
  • 4、pytest -- fixtures:明确的、模块化的和可扩展的

    pytest fixtures的目的是提供一个固定的基线 使测试可以在此基础上可靠地 重复地执行 对比xUnit经典的setup teardown形式 它在以下方面有了明显的改进 fixture拥有一个明确的名称 通过声明使其能够在函数 类
  • IntelliJ IDEA启动项目端口号被占用怎么解决!

    前言 在使用IDEA开发的时候 经常能碰到端口号被占用的报错 我就经常遇到因为我不知道为啥我IDEA他会在我没用的情况下会闪掉 然后等我发现再打开 运行项目的时候就经常报这个错 不过还有的同学是因为启动多个项目 导致端口号用的一样的所有才出
  • 计算机视觉中的深度学习6: 反向传播

    Slides 百度云 提取码 gs3n 神经网络的梯度下降 我们之前在学习线性分类器的时候 使用Loss函数以及梯度下降法来更新权重 那么对于神经网络 我们该如何计算每层神经元的权重呢 对每层W直接求导 愚蠢的方法 如上公式所示 Loss函
  • IDEA-设置VM启动参数

    点击配置 OK 使用方式 System out println System getProperty parm
  • Mysql5.7安装3306端口报错问题解决方法

    自己尝试重装Mysql 但是过程中遇到端口报错 Mysql5 7下载及安装大家可以去参考其他博客 有很详细的过程 我在安装过程中遇到了3306报错 就是在端口号的旁边会有一个感叹号 由于我是重装 我大概猜到原因是之前的Mysql没有卸载干净
  • MySQL安装之yum安装

    在CentOS7中默认安装有MariaDB 这个是MySQL的分支 但为了需要 还是要在系统中安装MySQL 而且安装完成之后可以直接覆盖掉MariaDB 1 下载并安装MySQL官方的 Yum Repository 1 root Bria
  • Linux基础之SQLite数据库

    嵌入式数据库篇 一 SQLite数据库 二 SQLite数据库安装 三 SQLite的命令用法 四 打开 创建数据库的C接口 五 C代码执行sql语句 六 C代码建表和插入数据 七 总结 一 SQLite数据库 1 简介 轻量化 易用的嵌入
  • 使用SpringSecurity

    前几天写了一个SpringBoot对拦截器的使用 在实际项目中 对一些情况需要做一些安全验证 比如在没有登录的情况下访问特定的页面应该解释的拦截处理 这一篇介绍使用SpringSecurity来做简单的安全控制 由于SpringSecuri
  • Servlet实现简单的前后端交互

    Servlet实现简单的前后端交互 首先前后端交互是啥呢 在我的理解中大概是这样的 简单的讲就是数据的交换 接下来我们来看看应该要怎么实现这个简单的交互 1 首先我们前端先不写静态页面 直接在url上将请求的参数放上去 2 后端要做的首先就
  • Mybatis+Servlet+Mysql 整合的一个小项目:对初学者非常友好,有助于初学者很快的上手Java Web

    文章目录 前言 为何要写 目录结构 1 依赖配置 1 1 创建一个web项目 1 2 依赖需求分析 1 3 pom xml 2 配置Mybatis 2 1 mybatis config xml 2 2 UserMapper xml 2 3
  • layui改变字体颜色或者背景颜色

    改变文字颜色 done function res curr count if res data length gt 0 each res data function ii dd if NOTNULL dd islatetime if par
  • 数据库开发题目-什么是视图?以及视图的使用场景有哪些?

    1 视图是一种虚表 2 视图建立在已有表的基础上 视图赖以建立的这些表称为基表 3 向视图提供数据内容的语句为 SELECT 语句 可以将视图理解为 存储起来的 SELECT 语句 4 视图向用户提供基表数据的另一种表现形式 5 视图没有存
  • 数据结构-期末复习重要知识点总结

    目录 第一章 绪论 第二章 线性表 3 顺序表表示 4 顺序表基本运算 5 链表 6 链表的基本运算 7 循环链表 8 双链表 9 静态链表 10 一元多项式表示及相加 第三章 限定性线性表 栈与队列 1 顺序栈 2 链栈 3 链队列 4
  • 三、Pytorch中tensor的内部结构

    tensor的数据结构 tensor分为头信息区 Tensor 和存储区 Storage 信息区主要保存着tensor的形状 size 步长 stride 数据类型 type 等信息 而真正的数据则保存成连续数组 由于数据动辄成千上万 因此
  • Android机顶盒网络地址端口连通性测试

    Android机顶盒网络地址端口连通性测试 文章目录 Android机顶盒网络地址端口连通性测试 1 直接telnet 2 busybox telnet 3 测试工具 一般我们使用如下三种方式进行测试 前一种不满足则执行下一种 1 外网可以