
网络编程
文章平均质量分 77
_依然_
这个作者很懒,什么都没留下…
展开
-
udpSocket捕获ICMP不可达错误
最近得写个udpAgent,由于要做udpServer端的容灾,所以要感知udpAgent发出的UDP包是否被某个udpServer接收。但是UDP协议本身是无状态的,也就是说默认情况下,udpAgent进程是无法感知其发出的UDP包是否被接收了的。 但是,从TCP/IP协议栈来说,如果一个UDP包没有到达目的地址,发送端会收到一个“目的地址不可达”的ICMP报文。所以现在的问题就只剩下原创 2013-09-30 16:04:32 · 5126 阅读 · 0 评论 -
GDB实践:一场std::sort引发的coredump
以前只掌握gdb一些基础知识,还没有真正"实战"过。刚好最近同事一个进程coredump了,原因比较深,正好利用这个机会来分析下原创 2014-08-24 17:27:52 · 7617 阅读 · 0 评论 -
epoll简介和使用
epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 说起epoll,就不得不提起select。对比起select,epoll主要有下面3个优点: 1、[句柄数] select最大句柄数受限,默认为1024(FD_SETSIZE值,可通过内核修改);而epoll最大句柄数为进程打开文件的句柄数,只受资源限制 2、原创 2013-10-07 23:10:39 · 2186 阅读 · 0 评论 -
IPC之共享内存
共享内存* 最快的IPC,因为操作共享内存不用涉及进程-内核的数据拷贝* 不同进程间操作共享内存需自己做同步机制,比如使用信号量等数据结构shmid_ds(#include)struct shmid_ds{ struct ipc_perm shm_perm; /* 操作权限*/ int shm_segsz;原创 2014-02-12 19:14:53 · 1363 阅读 · 0 评论 -
TCP协议和SocketAPI的几个小问题
服务端只有bind()没有Listen(),客户端会Connect()成功吗?服务端只有Listen()没有accept(),客户端会Connect()成功吗?服务端accept()会产生网络通讯吗?服务端只有Listen()没有accept(),客户端Connect()成功后可以调用write()写数据吗?服务端只有Listen()没有accept(),客户端连接能正常断开吗?原创 2014-04-01 17:17:39 · 1724 阅读 · 0 评论 -
libcurl使用示例
libcurl使用示例简要说明:C++使用libcurl访问"www.baidu.com",获取返回码和打印出http文件/* * @ libcurl使用示例 * @ 2014.04.29 * @ g++ -o LibCurlFunc LibCurlFunc.cpp -lcurl */原创 2014-04-30 10:49:54 · 7209 阅读 · 2 评论 -
IPC之信号量
信号量* 2种类型: - 二值信号量(取值为0或1的信号量,常用于进程间的"互斥锁") - 计数信号量(如生产者消费者问题等)* 2个操作 - P:等待信号量>0,然后将信号量--; - V:信号量++,如果有则唤起一个等待信号量>0的进程数据结构semid_ds(#include)struct semid_ds { truct ipc_p原创 2014-02-12 13:01:17 · 1295 阅读 · 0 评论 -
IPC之消息队列
key_t键和ftok()函数* 消息队列、信号量和共享内存具有内核持续性(与具体进程周期不相关),故需要在内核用一个全局唯一的Key来标识。* 这个Key的类型为整数key_t(定义在),可以在代码写死,也可以用ftok()函数生成* key_t ftok( const char * fname, int id )- fname为已存在的文件(不存在返回-1),id为子序号。通过原创 2014-02-11 21:16:53 · 1614 阅读 · 0 评论 -
IPC之管道、FIFO、socketpair
管道和FIFO作为最初的UNIX IPC形式,现在已用得较少。SocketPair可作为全双工版本的管道,较为常用管道* 只用于有亲缘关系的进程间通信* 单向,即半双工 (双向方法:1 使用2个管道 2 使用SocketPair)* pipe() => write()/read()FIFO (有名管道)* 可用于无亲缘关系的进程间通信* 单向* mkfifo() => open() => write()/read()原创 2014-02-09 16:38:21 · 2614 阅读 · 0 评论 -
libevent简介和使用
libevent是一个基于事件触发的网络库,memcached底层也是使用libevent库,所以今天先简单学习下。 一些资料: 1 libevent官网:http://libevent.org/ 2 libevent API:http://www.monkey.org/~provos/libevent/doxygen-2.0.1/i原创 2013-11-07 22:23:40 · 16901 阅读 · 6 评论 -
一些TCP和UDP使用问题汇总
下面是在实际后台开发中遇到的一些关于TCP和UDP的问题,这里积累起来:原创 2013-12-07 17:38:33 · 2128 阅读 · 1 评论 -
网络编程常用函数的封装
将Socket设置为非阻塞获取指定网卡的IP地址创建一个udpSocket创建一个tcpSocket原创 2013-10-13 13:48:20 · 1117 阅读 · 0 评论 -
Mysql开发实践8问,你能hold住几个?
1、Mysql读写性能是多少,有哪些性能相关的配置参数?2、Mysql负载高时,如何找到是由哪些SQL引起的?3、如何针对具体的SQL做优化?4、SQL层面已难以优化,请求量继续增大时的应对策略?5、Mysql如何做主从数据同步?6、如何防止DB误操作和做好容灾?7、该选择Mysql哪种存储引擎,Innodb具有什么特性?8、Mysql内部结构有哪些层次?原创 2014-09-21 23:23:28 · 2596 阅读 · 2 评论