映射外网_nat123论坛客服

 找回密码
 获得新生
查看: 1518|回复: 5

单片机如何进行nat123全映射?域名自动认证代码示例

[复制链接]
发表于 2018-9-10 15:51:24 | 显示全部楼层 |阅读模式
由于工作需要,现在开发通过单片机访问,电脑端的nat123的全映射?
根据全映射的的说明,先进行http域名访问,然后就可以,进行电脑端的全映射服务了,


谁有http进行单片机C语言,实现的http域名访问包??

中移动的NB-IOT,如何实现http的域名访问数据包??


谢谢




发表于 2018-9-11 07:54:30 | 显示全部楼层
单片机如果是linux系统可以使用命令进行认证:
wget  "http://映射后域名:任意端口"

如果是其它系统可以直接TCP连接任意端口后,发送http数据包:
GET / HTTP/1.1
Host: 你的全映射域名
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*

即可完成认证,注意数据包后加两个换行符

认证后支持任意传输层协议的通信
发表于 2018-9-11 08:10:24 | 显示全部楼层
C语言示例直接调用 openSite(全映射域名); 进行完成认证,其它语言类同


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <arpa/inet.h>
  7. #include <netinet/in.h>
  8. #include <unistd.h>
  9. int openSite(char *argv){
  10.    
  11.     int sockfd;
  12.     int len;
  13.     struct sockaddr_in address;
  14.     int result;
  15.     char httpstring[100];
  16.     sprintf(httpstring,"GET / HTTP/1.1\r\n"
  17.           "Host: %s\r\n"
  18.           "Connection: Close\r\n\r\n",argv);
  19.     char ch;
  20.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
  21.     address.sin_family = AF_INET;
  22.     address.sin_addr.s_addr = inet_addr(argv);
  23.     address.sin_port = htons(8080);
  24.     len = sizeof(address);
  25.     result = connect(sockfd,(struct sockaddr *)&address,len);
  26.     if(result == -1){
  27.        perror("oops: client");
  28.        return 1;
  29.     }
  30.     write(sockfd,httpstring,strlen(httpstring));
  31.     while(read(sockfd,&ch,1)){
  32.       printf("%c", ch);
  33.     }
  34.     close(sockfd);
  35.     printf("\n");
  36.     return 0;
  37. }
复制代码


 楼主| 发表于 2018-9-11 13:36:11 | 显示全部楼层
nat123jia 发表于 2018-9-11 07:54
单片机如果是linux系统可以使用命令进行认证:
wget  "http://映射后域名:任意端口"

非常感谢,测试通过,完美解决!

 楼主| 发表于 2018-9-11 15:39:35 | 显示全部楼层
nat123jia 发表于 2018-9-11 08:10
C语言示例直接调用 openSite(全映射域名); 进行完成认证,其它语言类同

非常感谢,完美解决,这个方法,完美解决!
发表于 2019-5-8 18:18:28 | 显示全部楼层
nat123jia 发表于 2018-9-11 07:54
单片机如果是linux系统可以使用命令进行认证:
wget  "http://映射后域名:任意端口"

如果是其它系统可以直接TCP连接任意端口后,发送http数据包:
GET / HTTP/1.1
Host: 你的全映射域名
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*

即可完成认证,注意数据包后加两个换行符

认证后支持任意传输层协议的通信


上面这个,我们这些菜鸟都不会弄。怎么搞
您需要登录后才可以回帖 登录 | 获得新生

本版积分规则

nat123

GMT+8, 2019-8-21 17:39 , Processed in 0.232548 second(s), 15 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc. | 网站反馈邮箱:natbbs#163.com(把#换成@)

快速回复 返回顶部 返回列表