嵌入式学习35-网络通信UDP聊天及TCP

题目:基于UDP实现直播间聊天的功能
需求:
    软件划分为用户客户端和主播服务端两个软件client.c和server.c 

    用户客户端负责:
        1.接收用户的昵称
        2.接收用户输入的信息,能够将信息发送给服务端
        3.接收服务端回复的数据信息,并完成显示
    
    主播服务端负责:
        1.对所有加入直播间的用户的IP地址和端口实现管理(加入、退出)
        2.当有新的客户端加入时,能够向所有客户端提示:"欢迎 XXX 用户进入直播间"
        3.当有客户端退出时,能够向所有客户端提示:"XXX 离开直播间"
        4.能够实现客户端聊天内容的转发,当某个客户端发送聊天信息时,能够将该信息转给除了该用户之外聊天室内所有其余客户端用户
    
        实现服务端对用户的管理(1.查看当前直播间的在线人数 2.能够实现禁言、踢出直播间功能)

TCP通信:     (可做流量控制)

TCP发端:        5
  1.  socket               创建套接字文件  描述符
    2.connect               发送链接请求
    3.send                       发送数据
    4.recv                         接受数据
    5.close                          关闭套接字fd

TCP收端:          7
    1. socket 
    2.bind                  
在 套接字 上绑定一个    IP地址和端口号
    3.listen                  
监听客户端发送的 连接请求
    4.accept                    处理 等待连接队列 中的 第一个连接请求    
    5.send                                
    6.recv 
    7.close                           close(fd),close(sockfd)

1.connect 
  int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);
  功能:
         发送链接请求
  参数:
    sockfd:                                                                                                                                                            套接字文件描述符
    addr:                                                                                                                                                           目的地址 存放空间首地址
    addrlen:                                                                                                                                                           IP地址的 大小
  返回值:
    成功返回0
    失败返回-1 

2.send 
  ssize_t send(int sockfd, const void *buf, size_t len, int flags);
  功能:
         发送数据
  参数:
    sockfd:                                                                                                                                                           文件描述符
    buf:                                                                                                                                                           发送数据空间首地址
    len:                                                                                                                                                           发送数据的  长度
    flags:                                                                                                                                                           属性默认为0 
  返回值:
    成功  返回  实际发送字节数
    失败  返回  -1 

3.recv
  ssize_t recv(int sockfd, void *buf, size_t len, int flags);
  功能:
    接收数据 
  参数:
    sockfd:                                                                                                                                                           套接字文件描述符 
    buf:                                                                                                                                                           存放数据空间首地址
    len:                                                                                                                                                           最大接收数据的长度
    flags:                                                                                                                                                           属性默认为0 
  返回值:
    成功  返回  实际接收字节数
    失败  返回-1 
    如果对方退出,返回0 

4.listen
  int listen(int sockfd, int backlog);
  功能:
    监听客户端发送的 连接请求
    该函数不会阻塞
  参数:
    sockfd:                                                                                                                                                           套接字文件描述符
    backlog:                                                                                                                                                           允许等待的尚未被处理的三次握手请求的最大个数     若最大接受10个 第11个不会接收                                                                                                         若处理完成10个  继续接收10个
   返回值:
    成功  返回  0 
    失败  返回  -1 

5.accept
  int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  功能:
    处理 等待连接队列 中的 第一个连接请求                                                                                                                                                          
    该函数具有阻塞功能(如果没有人发送链接请求,会阻塞等待)
  参数:
    socket:                                                                                                                                                           套接字文件描述符
    address:                                                                                                                                                           存放IP地址的空间 首地址
    addrlen:                                                                                                                                                           存放IP 地址大小 空间首 地址
  返回值:
    成功 返回    一个文件描述符
    失败 返回-1 

相关推荐

  1. 嵌入学习35-网络通信UDP聊天TCP

    2024-03-11 15:12:04       40 阅读
  2. 嵌入学习——网络编程(UDP)——day30

    2024-03-11 15:12:04       28 阅读
  3. 嵌入学习——网络编程(TCP)——day31

    2024-03-11 15:12:04       23 阅读
  4. 嵌入36——TCP

    2024-03-11 15:12:04       40 阅读
  5. 嵌入面经-TCP/UDP

    2024-03-11 15:12:04       35 阅读
  6. QT网络通信-TCPUDP通信

    2024-03-11 15:12:04       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 15:12:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 15:12:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 15:12:04       82 阅读
  4. Python语言-面向对象

    2024-03-11 15:12:04       91 阅读

热门阅读

  1. ARM GNU 汇编 “每日读书“

    2024-03-11 15:12:04       40 阅读
  2. flink是什么

    2024-03-11 15:12:04       36 阅读
  3. 使用docker搭建s-pdf

    2024-03-11 15:12:04       45 阅读
  4. 《Effective Modern C++》- 极精简版 30-35条

    2024-03-11 15:12:04       44 阅读
  5. 力扣爆刷第91天之hot100五连刷41-45

    2024-03-11 15:12:04       46 阅读
  6. 【Django】聚合查询

    2024-03-11 15:12:04       42 阅读
  7. 数据的处理包括哪些内容

    2024-03-11 15:12:04       37 阅读
  8. TREC 2023 Deep Learning Track Guidelines

    2024-03-11 15:12:04       35 阅读
  9. Django路由层

    2024-03-11 15:12:04       39 阅读
  10. 关于51单片机晶振定时问题

    2024-03-11 15:12:04       44 阅读
  11. Mybatis分组查询大于某值的最小值记录

    2024-03-11 15:12:04       45 阅读