![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unix网络编程
文章平均质量分 78
vonzhou
这个作者很懒,什么都没留下…
展开
-
socketpair函数
socketpair 函数仅适用于Unix域套接字,创建一个stream pipe,但是与pipe()调用不同在流管道是全双工的。既可以在同一个进程中读写,但更常见的是通过stream pipe进行父子进行的通信。#include #include #include #include #include #include #include #define BUF_SIZE 50原创 2014-02-21 20:10:51 · 2283 阅读 · 0 评论 -
对UDP socket缓冲区的理解
对UDP socket缓冲区的理解 UDP套接字的收发报文要用sendto 和 recvfrom,可以类比TCP套接字的connect和accept,参数里面会标识要发往的对端,或者要接收的对端的IP地址和端口;对UDP套接字connect的行为也只是告诉内核:“帮我做个过滤,我只关心这个对端的报文”,已连接的UDP套接字上可以利用read, write, recv, se原创 2014-09-05 14:03:17 · 11446 阅读 · 1 评论 -
高性能网络编程 - select系统调用
IO复用使得程序能够同时监听多个文件描述符,比如客户端需要同时处理用户输入和网络连接,服务器端需要同时处理监听套接字和连接套接字,select系统调用可以使得我们监听自己感兴趣描述符,可读,可写,异常等事件。select能处理的异常只有带外数据。下面这个程序展示了它的一般用法。#include #include #include #include #include //bas原创 2014-07-10 18:56:56 · 1380 阅读 · 0 评论 -
epoll 入门示例
UNP中总结了几种IO模型,阻塞式的IO是在数据准备好之前,进程会阻塞于相应的系统调用(睡眠),默认情况下所有的套接字都是阻塞的;非阻塞是IO,即轮询,每次在一次系统调用的时候,如果数据没有准备好,进程不阻塞而是立即返回一个错误,这样会耗费CPU;而select 和 poll 不过是站在更高的抽象层次上(代理),不是阻塞在每个系统调用上,而是同时监控很多描述符,当有一个或多个注册的IO事件发生时,我们就需要轮询一遍所有的描述符(流),进而查看是否是否ready,同样不适合高并发的server 。epoll采原创 2014-03-09 21:09:14 · 2681 阅读 · 2 评论 -
高性能网络编程 - epoll机制
select系统调用不仅对描述符的数量有限制,而且在高并发的情况下,哪怕只有一个活跃的套接字,也要轮询全部的fd set,而epoll采用回调的事件通知机制,只需要处理活跃的套接字。比如Nginx服务器采用的就是epoll,下面这个程序(当接收到大于10B的数据时)展示了epoll在边沿触发和电平触发的不同表现,在edge-trigger模式下,需要我们的程序一次将这次的事情处理完成(比如把数据全原创 2014-07-10 19:40:34 · 1519 阅读 · 2 评论 -
TCP 客户/服务器程序示例
(UNP 第五章)Server端:#include "util.h"intmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid;原创 2014-03-05 10:20:24 · 1280 阅读 · 0 评论 -
网络字节序
大端模式:从高字节开始存储;小端模式:从低字节开始存储; 网络协议必须协调一致字节序(网络字节序),同时也要考虑到不同主机的实际情况,所以存在二者之间的转换。 常见的函数有 htons,htonl,ntohs,ntohl。查看主机字节序(UNPv1 P64):#include#includeintmain(int argc, char **argv)原创 2014-03-03 20:49:42 · 1042 阅读 · 0 评论 -
socket error:[Errno 111]Connection refused 问题
1.确保服务端在相应的端口监听;2.关闭防火墙(ubuntu下面的命令:sudo ufw disable);3.而且server端要 sudo 运行;UNP第一个小程序(有些异常没有捕获):客户端:intmain(int argc, char **argv){ int sockfd, n; char recvline[MAX原创 2014-03-03 18:17:08 · 65466 阅读 · 0 评论 -
ioctl 函数
用户空间可以将命令通过ioctl系统调用的方式传给内核,从而实现配置某事或者倾卸某事的任务,网络代码使用ioctl的方式就是传递套接字描述符和相应的命令。我们熟悉的ifconfig命令就是利用ioctl与内核通信。 下面是一个简单的程序。#include#include#include#include#include#include#include#include#原创 2014-02-28 20:14:43 · 1205 阅读 · 0 评论 -
Unix域套接字入门
通用套接字地址结构 (sys/socket.h):typedef unsigned short sa_family_t; //2 Bstruct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14];原创 2014-02-21 19:23:02 · 960 阅读 · 0 评论 -
JSON-RPC 1.0 规范
JSON-RPC 1.0 SpecificationsThe specifications should provide the developer with the information needed to implement the protocol.NOTE: The JSON-RPC 2.0 Specification has been published.Over转载 2014-07-04 09:59:04 · 2137 阅读 · 0 评论