硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1812|回复: 2
收起左侧

[RL-TCPnet] MDK的RL-TCPnet组件BSD socket编程模式怪怪的

[复制链接]

3

主题

15

回帖

24

积分

新手上路

积分
24
发表于 2020-5-21 16:40:18 | 显示全部楼层 |阅读模式
提供的TCP服务器例程:
void Server_Thread (void *arg) {
  SOCKADDR_IN addr;
  int sock, sd, res;
  int type = (int)arg;
  char dbuf[4];

  while (1) {
    sock = socket (AF_INET, type, 0);

    addr.sin_port        = htons(PORT_NUM);
    addr.sin_family      = PF_INET;
    addr.sin_addr.s_addr = INADDR_ANY;

    bind (sock, (SOCKADDR *)&addr, sizeof(addr));

    if (type == SOCK_STREAM) {
      listen (sock, 1);
      sd = accept (sock, NULL, NULL);
      closesocket (sock);  //此处要关闭之前建立的socket
      sock = sd;
    }

    while (1) {
      res = recv (sock, dbuf, sizeof (dbuf), 0);
      if (res <= 0) {
        break;
      }
      if (dbuf[0] == BLINKLED) {
        LED_SetOut (dbuf[1]);
      }
    }
    closesocket (sock);
  }
}

如上,接收到了连接要关闭之前创建的socket,这有点怪怪的,如果我要用这个socket接收多个连接那不是要白瞎了
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2020-5-21 18:09:01 | 显示全部楼层
因为你的程序里面listen (sock, 1)设置最大监听1个连接。

监听到1个连接后,还留着它干啥呢。。。。
代码不规范,亲人两行泪!
回复

使用道具 举报

3

主题

15

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2020-5-21 22:34:05 | 显示全部楼层
好吧,说得在理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 20:04 , Processed in 0.158575 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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