正点原子407开发板SAL实验遇阻

发表在 Network2019-10-12 17:33 [复制链接] 1 271

各位好,今天想研究一下RT的SAL组件,配置了使能标准BSD SOCKET  结果总是connect failed  ,贴上我的代码帮忙分析一下:#define SERVER_HOST   "172.20.2.170"
$ G( n  V5 i+ P#define SERVER_PORT   1234
  o* s$ ~% L( D% L/ Y2 E' o7 G- B$ b, W& f% p

" V+ q; X# d, N' b1 @int netdev_set_ipaddr_test(int argc, char **argv)7 m4 u2 L$ I, \! m" V' x
{4 `$ y: Y: F7 U" ?$ e6 c, ]. k
6 E% O( c& \/ g# T- x3 t1 x
9 ?' I6 F$ ]/ r; H- |
struct sockaddr_in server_addr;/ c2 `, `5 n; J9 N' k  F3 P' z
                int sockfd = -1;5 I# l3 D2 h) d8 B# n, K
          if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
# U! N+ Z2 `- a    {
  N/ A8 o: \  h, H3 M        rt_kprintf("Socket create failed.\n");
& W5 z$ l! C' l        return -RT_ERROR;
: g! z4 ~" s3 a! g& r+ P$ Q    }
! G& C6 V) i4 r! ?( ^" z                //    /* 初始化预连接的服务端地址 */) c& R+ R9 A, ]# w, E- c- A
    server_addr.sin_family = AF_INET;
$ T9 F3 ~. ^! c# h    server_addr.sin_port = htons(SERVER_PORT);
" \" }0 O/ I. y3 z: _    server_addr.sin_addr.s_addr = inet_addr(SERVER_HOST);" R" g- m& L4 O. ]7 }
    rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
8 F8 {/ }8 F( w% B# Q3 Z! j1 g               
5 d, ^9 u4 C$ B3 V. ^1 n# ?9 E# p        if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) < 0)7 v% F4 O1 t1 s) \, K5 o" L' N0 _
    {3 |1 E! p: Q" K& B
        rt_kprintf("socket connect failed!\n");# }* A+ y( s3 @% ~# R3 K' ^! u
        closesocket(sockfd);
: @/ r/ L; a1 ^3 t+ A$ Z+ M$ q' Q        return -RT_ERROR;$ A/ S# h) [% G! {" o6 y
    }
. Q1 m6 y; I+ Z* G' R: v% d' I( b" q           else+ k% H9 }1 z8 _. r9 M# y
    {. {3 u5 T0 M, ~3 B* U2 m2 ~& X
        rt_kprintf("socket connect success!\n");5 I2 h1 r' h5 d3 O6 Y6 P
    }
& J6 Q% c$ w3 X/ ?; Y- R& |2 Q) q6 D                send(sockfd,"hello socket",10,0);
( y4 o* y1 d; e) G* ~' }- Q                closesocket(sockfd);
1 H. |: @+ p" t5 C# O0 a, ^+ P8 {. u2 D/ U& P5 I$ U7 [7 O# A8 O
}
2 h, {4 L0 E; L. ?7 k2 Z/ H( {跟踪调试发现4 T4 n. j! c5 I, S: b' O1 Q
int connect(int s, const struct sockaddr *name, socklen_t namelen)8 P9 u3 i. r9 |) h* U
{
* o* J7 Q5 o! E' d    int socket = dfs_net_getsocket(s);
2 \& @. o- o! `* S! {
0 r) i2 m6 T9 Z* V" V/ P    return sal_connect(socket, name, namelen);4 I1 `8 x1 f2 J7 F/ M# Q
}: B) s$ h/ D) G( J" G, f
这里 socket=0
# c- i! p: ?5 l
. s! [% w( i& L0 L8 J! k& k  M( P9 W- ]/ S

/ [/ M9 A. K2 b" W) V$ O8 N9 d& g
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-10-12 18:28:25 | 显示全部楼层
楼主如果是第一次使用网络部分的话建议参考现有的例程操作成功之后再看源码
5 A% G4 x2 d3 y3 z! n/ j9 x$ y( F( \' @https://www.rt-thread.org/docume ... t/an0014-at-client/
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 10 主题
  2. 126 帖子
  3. 126 积分

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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