AT ESP8266 telnet 失败

2019-8-5 22:02 [复制链接] 4 356


/ `3 ?. V& T4 t: l8 `) T. a2 V6 H! c目的:  ESP8266  实现 wifi  下运行telnet  进行finish 操作,
/ D0 s% ]; v" s4 ~$ S
' V" r% w$ L9 V7 M( J
& t5 e5 V- [' q# [# U" Z操作:
! d  U( T/ }; a- ^! B/ i1,开启telnet 模块7 B+ `) C; B" P9 R8 b# i/ }: k( R1 p

! {6 T- t' s5 ?- f# f2 M6 J% k( }# r7 N. m2 J5 J' Z) f; N* I4 Z
2 开启 AT ESP8266驱动: g! Z' v4 Q: z! W
5 P3 a# S$ W* l( L0 z
  H& c# G- E( j& W2 b( p: ]
3 开启AT 组件4 f  ?+ R' L3 S5 y4 s1 T: b

' q+ w5 a! B3 I4  开启SAL / A6 n# y9 x( E  y0 [1 m' W7 Z

4 `0 t7 b0 Z  F  f0 b5 修改telnet.c  里的 AF_INET  替换 AF_AT9 k& Q* V$ N+ k6 D. ?
#define AF_INET_temp AF_AT  (这句是我加的 )4 X% A  Z0 X3 a, Y% e
static void telnet_thread(void* parameter)
0 B: O3 w$ a( I' V+ A9 d{* l: L; c/ {  d
#define RECV_BUF_LEN 64
: _' Z2 c1 {4 A9 M7 q; Q* [, k. L) Q& T
    struct sockaddr_in addr;) c$ q  u# E( S- h% V+ ~& I# _
    socklen_t addr_size;
5 A' k) }, w6 o' A! M    rt_uint8_t recv_buf[RECV_BUF_LEN];
$ F/ \6 I. @$ `! H    rt_int32_t recv_len = 0;
7 O% v8 g+ {. }) p, E# O  }+ b) A3 |% l
    if ((telnet->server_fd = socket(AF_INET_temp, SOCK_STREAM, 0)) == -1)4 D- S/ O6 f1 L! e4 m: f, l9 F3 R
    {$ `. p; Q+ |2 i" k8 U& u
        rt_kprintf("telnet: create socket failed\n");
' x2 p% f/ _' D+ T+ g        return;! C& u/ }& H! `; M; {
    }; T. F' O$ _6 l5 K

" e0 m) ^2 Y( C& }0 A& m    addr.sin_family = AF_INET_temp;7 O1 Q" Z3 b5 c+ s
    addr.sin_port = htons(TELNET_PORT);
! y# _, F' Q. W) I, E2 f/ R& G    addr.sin_addr.s_addr = INADDR_ANY;
0 K) W* s& B$ X    rt_memset(&(addr.sin_zero), 0, sizeof(addr.sin_zero));
) l0 S8 |0 K$ W" }5 W/ j( N* E    if (bind(telnet->server_fd, (struct sockaddr *) &addr, sizeof(struct sockaddr)) == -1)8 w9 }/ S$ R; k9 R. r* V* b- S
    {
* q+ P) H+ v( U: B        rt_kprintf("telnet: bind socket failed\n");9 S0 S, \& p' `: V
        return;
, K& G" A8 u+ w0 b5 t    }' }- D) V6 \" G6 l" b8 G& M

, z  e2 E6 v; x# s. M4 I1 m
) s' G8 T6 [8 U6 ,测试后 出现问题# R' I& y' z- J. g9 X7 Q; c5 a

7 ^, Q% y  P7 r发现 AT+CIPCLOSE 失败7 @: t- C6 R" r9 D: n4 j2 b! T' n) b

8 U4 V& m- v9 [# H  hCLI 模式下直接发AT 命令
3 W/ P& O. f6 PAT+CIPSTATUS
  o! S) @0 D# \" S/ B# ASTATUS:4  
) M- w9 I$ g8 r$ m# U4 z
/ X" Z( s% [3 {: N& ~. [0 h1 uOK
) u( R* @4 t1 \! v7 H* p- ], I9 X% U  M1 Z8 ]4 S  ?8 n
4代表失去 连接- R0 P% {+ L* L+ t+ E
发现以问题 , telnet 流程下先关闭 TCP  但是& w, u0 {7 _$ K' X& D

$ T' |/ f  m" R6 NAT+CIPCLOSE=0
3 i$ p# k0 \2 TUNLINK( h" |5 U: p- u3 Y" }

( ~' Q- g; ]% a$ x* O4 m0 k; FERROR
: M4 i; U/ M& J5 k0 }8 p( p
+ o6 H" v  E$ \. ]/ U: E1 R0 ?+ C3 q) z) i
这里有个ERROR 导致 at_client 文件下的函数 at_obj_exec_cmd
* r1 [* S, V0 `1 V3 X4 }- T        if (client->resp_status != AT_RESP_OK)
/ W6 [3 w, v; [: \. e+ d. f        {
3 Q- G5 u' g) P- z9 S! _            cmd = at_get_last_cmd(&cmd_size);! O8 |* ~3 C1 F# H+ O9 P9 U3 q: C
            LOG_E("execute command (%.*s) failed!", cmd_size, cmd);
" ?0 T5 l3 d9 _# |# M; _. G( y2 u* L# p            result = -RT_ERROR;$ ^2 T' Y! N  a) A; T0 Q5 C
            goto __exit;- R+ g3 r" g/ D; @/ N! E# S
        }
9 B! S; j( p" P9 @    }& ]# N$ Z7 y$ {
2 {- C- G7 b5 v, G. P
7 @- F) B) m9 \( M% `+ H) B" f) d
然后报了错误 导致  bind 失败. S, E; V  }: U* g2 q5 x
    if (bind(telnet->server_fd, (struct sockaddr *) &addr, sizeof(struct sockaddr)) == -1)
- S; c. b6 O* C  o3 N    {
2 D/ D/ t/ O# D& G6 z. u* ?        rt_kprintf("telnet: bind socket failed\n");
* l; _* @6 ~' W. ]" I6 J        return;5 e# D7 ~, N! R
    }8 r: R; V3 b2 I
; K7 u8 y4 L9 L4 I- O1 A
* S5 e3 m, ~# [+ j$ `" {
请问:
: v8 D) m- W. B+ S3 A* q. j0 I, stelnet.c 里的bind 干啥了,为啥回去关TCP?% H, W. V" d# l* R  k& C" w: h( l" h0 Z
ESP8266  下telnet  怎么实现 有例子 吗?  $ w( [+ ^8 V9 S
官网的代码怎么实现telnet呢?
" H. i; r# g5 r; j+ A0 S
- ~) r( N" {4 ]$ y" o5 S9 f: R0 j: F' I
  }3 t! P8 j; w2 E/ h5 j' ]
+ D  a5 F* _0 l2 O3 ?
# }! _& g2 l- t9 F

8 L) j: Z$ V) s* u& G: ^$ C3 r, C
4eb88e275a1c2564a8e257daa7e0964.png
1565012331(1).jpg
1565012079(1).jpg
1565011960(1).jpg
1565011750(1).jpg
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-8-6 09:44:27 | 显示全部楼层
AT Socket 只支持作为客户端吧,telnet 作为服务器应该不能使用
使用道具 举报 回复
发表于 2019-8-6 10:45:15 来自手机 | 显示全部楼层
你好 我的理解是 只要esp8266模块能开tcp服务端7 O2 D0 @) u" Q2 f) x1 M
应该就能进行telnet了,不知道理解对不对
使用道具 举报 回复
发表于 2019-8-6 12:56:36 | 显示全部楼层
esp8266 模块本身是支持服务器端的,AT Socket 组件还没有支持这个功能特性,如果需要支持 esp8266 模块的服务器端功能,当前只有修改 AT Socket 组件的。
使用道具 举报 回复
发表于 2019-11-14 15:58:41 | 显示全部楼层
楼主,解决这个问题了没?,我也碰到了
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

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