
Unix网络编程
文章平均质量分 80
轮子学长
这个作者很懒,什么都没留下…
展开
-
网络编程I/O函数介绍
read和write#include ssize_t read(int fd, void *buf, size_t count);ssize_t write(int fd, const void *buf, size_t count);参数:fd: 文件描述符buf:数据缓冲区,用于保存要从fd读取或写入的数据count:输入/写入的数据最大字节数。(实际读取或原创 2014-10-30 12:07:47 · 1334 阅读 · 0 评论 -
字节序与大小端
为什么会有字节序问题1. 内存以8bit为一个地址单位:早期的处理器地址以8bit为一个单位(8位处理器),也就是说一次可以访问8bit的数据,后来出现了16位,32位甚至64位的处理器,但为了兼容最早的8位处理器,因此沿用8bit为一个地址单位。2. 大于8位的处理器,如32位处理器,虽然每个8bit(一个字节)存储数据的方式是一样的,但是针对整形这样的有多个字节的数据结构的数据,每个字原创 2014-11-26 09:26:53 · 2405 阅读 · 1 评论 -
套接字编程常用函数
不同协议的套接字编程(TCP套接字、UDP套接字、原始套接字等)的模型有所差异,但一般会使用到一下常用函数: #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol);原创 2016-03-16 21:46:23 · 2853 阅读 · 0 评论 -
send、recv等socket编程接口的阻塞与非阻塞模式.md
socket编程中经常使用send和recv函数来接收和发送数据。 对于系统来说,不管是发送数据还是接收数据,都不是直接在内存上操作的。 发送数据有发送缓冲区,接收数据有接收缓冲区。对于send来说,send函数调用时,先将将应用程序请求发送的数据拷贝到发送缓存中,而后驱动程序会去读取发送缓冲中的数据,在进行真正的传输。 对于recv来说,recv只是从接收缓冲中读取数据,而接收缓存中的数据来自原创 2016-07-14 21:38:23 · 3484 阅读 · 0 评论 -
select、poll、epoll详解
IO多路复用 网络通信中,select、poll、epoll主要用于提供IO多路复用的解决方案。 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:(1) 当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。(2) 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。(3) 如果一个TCP服务原创 2016-07-28 15:04:56 · 2631 阅读 · 0 评论 -
TCP网络协议编程——close()和shutdown()比较
终止tcp网络连接的几种方式调用close调用shutdown进程退出(调用exit或从main函数返回,或收到一个终止本进程的信号)close()函数调用close函数可以产生以下效果:导致相应socket套接字的引用计数减一。如果引用计数为0时,发送FIN包。指明本进程不应该再使用对应的socket套接字。对于单进程而言,因为其socket套接字的引用计数不会原创 2018-01-15 15:59:39 · 1470 阅读 · 1 评论