网络编程 客户端读取

发布于 2024-03-26 09:22:17 字数 1670 浏览 26 评论 0

套接字用 send() 写数据,用 recv() 读数据:

<读了几个字节> = recv(<描述符>, <缓冲区>, <要读取几个字节>, 0);

2.1 recv() 函数

revc() 用起来十分繁琐,最好把它安装在某个函数中,比如下面这个函数,它在指定数组中保存以 \0 结束的字符串。

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>

/**************************************************************************************/
/*函数名称:int read_in(int socket, char *buf, int len)                                 */
/*函数功能:recv 读取封装函数                                                            */
/*参数:   socket: 套接字描述符                                                    */
/*        buf:    缓冲区     
/*        len:    读取的字节数                                                        */
/*返回值: len-slen                                                                       */
/**************************************************************************************/
int read_in(int socket, char *buf, int len) {       // 读取\n 前所有字符
    char *s = buf;
    int slen = len;
    int c = recv(socket, s, slen, 0);
    while ((c > 0) && (s[c-1] != '\n')) {           // 循环读取字节直到没有字节可读或者读到\n
        s += c;
        slen -= c;
        c = recv(socket, s, slen, 0);
    }
    if (c < 0) {
        return c;       //防止错误
    } else if (c == 0)
        buf[0] = '\0';  // 什么都没有读到返回一个空字符串
    else
        s[c-1] = '\0';  // 用\0 替换\r
    return len-slen;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文