嵌入式学习day33

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

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

TCP通信:

TCP发端:
    socket 
    connect 
    send
    recv 
    close 

TCP收端:
    socket 
    bind 
    listen 
    accept 
    send 
    recv 
    close 

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:允许等待的尚未被处理的三次握手请求的最大个数
  返回值:
    成功返回0 
    失败返回-1 

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

相关推荐

  1. 嵌入学习day33

    2024-03-11 15:56:02       42 阅读
  2. 嵌入学习 Day 31

    2024-03-11 15:56:02       41 阅读
  3. 嵌入学习day35

    2024-03-11 15:56:02       45 阅读
  4. 嵌入学习day36 数据结构

    2024-03-11 15:56:02       38 阅读
  5. 嵌入学习day38 HTML

    2024-03-11 15:56:02       37 阅读
  6. 嵌入学习day39 数据结构

    2024-03-11 15:56:02       32 阅读
  7. 嵌入学习——网络编程(UDP)——day30

    2024-03-11 15:56:02       28 阅读
  8. 嵌入学习——网络编程(TCP)——day31

    2024-03-11 15:56:02       23 阅读

最近更新

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

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

    2024-03-11 15:56:02       100 阅读
  3. 在Django里面运行非项目文件

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

    2024-03-11 15:56:02       91 阅读

热门阅读

  1. 前端安全方面

    2024-03-11 15:56:02       46 阅读
  2. 列表解析扩展使用

    2024-03-11 15:56:02       44 阅读
  3. nginx配置缓存静态资源

    2024-03-11 15:56:02       44 阅读
  4. c++ vector使用

    2024-03-11 15:56:02       47 阅读
  5. python中的错误和异常

    2024-03-11 15:56:02       36 阅读
  6. 网络安全风险评估:详尽百项清单要点

    2024-03-11 15:56:02       41 阅读
  7. C++中的常量指针和指针常量

    2024-03-11 15:56:02       43 阅读
  8. 自动化运维工具----Ansible入门详解

    2024-03-11 15:56:02       43 阅读
  9. multiprocessing快速入门和总结

    2024-03-11 15:56:02       35 阅读
  10. 突破编程_C++_STL教程( map 的基础知识)

    2024-03-11 15:56:02       27 阅读
  11. FlinkCDC快速搭建实现数据监控

    2024-03-11 15:56:02       38 阅读