网络编程 客户端读取
套接字用 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 技术交流群。

上一篇: 服务器连接网络四部曲
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论