tcp client 非阻塞连接,每次都返回错误 -1 的问题

发表在 Network2019-11-18 17:55 [复制链接] 0 83

本帖最后由 _Tony_ 于 2019-11-18 17:59 编辑 ) X# h' i6 R- i4 A7 ?

# s- J0 Z, X: x' G+ C! uif (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)& j* E: F1 ^% {' y
{
) i$ Z! U+ y) W    closesocket(sock);2 y/ m& g; o8 R$ ~* h6 Y
    return -RT_ERROR;* U" A/ |; \& \& J* K5 ?; {  N. Z
}  L8 g, @, j' i  [! k

% C5 a. [  l6 `/ T. f0 _主板做为TCP client,在connect服务器的时候网线突然拔掉,程序就阻塞在函数 lwip_netconn_do_connect 里面等待连接上服务器(sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);)。
; C! z# P- t% h! X, c& m所以打算将其改为非阻塞连接。
3 `) X- m2 k* r0 `8 y. S5 y3 u. S2 e  [9 y6 d* S
int imode=1;
/ E$ y# u; R" M8 b6 B  V! uint retVal;% O, p; |: d0 s# `* K5 ~) p5 b2 T8 r
retVal=ioctlsocket(sock, FIONBIO, &imode);
  `' y1 ?! l, i" Q( o: r8 n+ Y
) D3 A9 x& K' O7 D" l$ W/ q
1 ?+ Z( k# ~, ?3 z" \4 ]2 [if (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)/ J2 r" {/ C- Z! ~8 G) X3 p- L
{4 G" I9 _: C# f& p$ q4 a* ~
    closesocket(sock);( I; u5 m  d, F
    return -RT_ERROR;5 X( V6 B6 C$ |# E0 r* Z* x) f
}
, ~, }8 r2 B2 a7 w5 Z' R3 m0 |
0 {/ X' K+ z  B* z8 m1 T但是将程序改为非阻塞连接,不管网线连接是否正常,每次connect都返回连接错误(-1)。1 l- H+ p) c0 F8 o
请问下大家,有什么方式解决Tcp client非阻塞连接错误的问题吗?
$ T" f$ j5 @1 `3 v: R7 ^, H( {- J
9 _7 t2 u' x! B" w2 C环境:rtthread版本: 3.1.1# a; [, S1 l4 ^' P. G- K, k9 p

5 P4 ?0 x/ U! g4 h( ?7 Wlwip版本:2.0.2
! v$ }3 R+ y, C% ]- B  k4 `
/ t9 j7 F6 V' z
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

Powered by RT-Thread

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