生活随笔
收集整理的這篇文章主要介紹了
Android机顶盒网络地址端口连通性测试
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Android機頂盒網(wǎng)絡地址端口連通性測試
文章目錄
- Android機頂盒網(wǎng)絡地址端口連通性測試
- 1、直接telnet
- 2、busybox telnet
- 3、測試工具
一般我們使用如下三種方式進行測試,前一種不滿足則執(zhí)行下一種:
- 1、外網(wǎng)可以訪問時可以使用telnet直接進行ip及端口測試;
- 2、外網(wǎng)無法訪問只有機頂盒可以訪問時可以使用busybox telnet進行測試;
- 3、當外網(wǎng)無法訪問且機頂盒不具備busybox telnet時可以使用我們開發(fā)的C工具進行測試,目前已經(jīng)交叉編譯適配機頂盒;
1、直接telnet
telnet host port
如圖所示:
2、busybox telnet
busybox telnet ip port
似乎是不支持域名的:
3、測試工具
在網(wǎng)上找了一個,簡單的C寫的socket通信,使用select進行監(jiān)聽:
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 <netinet/in.h>
#include <errno.h>
#include <netdb.h>#define TIMEOUT 5int 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;}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
;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
){ 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;}}if (res
== 2){printf("error:Connect server timeout\n");close(sockfd
);return 5;}printf("error:Connect server timeout\n");close(sockfd
);return 5;
}
之后我們將其交叉編譯后放到Android機頂盒中運行即可:
總結(jié)
以上是生活随笔為你收集整理的Android机顶盒网络地址端口连通性测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。