
网络编程
xiaojun11-
勤能补拙,奋发ing
展开
-
Linux下的五种IO模型
概念说明用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linu转载 2016-07-12 09:10:56 · 383 阅读 · 0 评论 -
使用libcurl实现的下载器,取消下载
转载文章 http://blog.youkuaiyun.com/robertbaker/article/details/43703907转载文章 http://blog.youkuaiyun.com/infoworld/article/details/46646933谢谢版主一、使用libcurl实现的下载器libcurl的主页:http://curl.haxx.se/头文件:/*******...转载 2016-11-04 10:07:47 · 7623 阅读 · 0 评论 -
libevent源码深度剖析四
摘自: http://blog.youkuaiyun.com/sparkliang/article/details/4957885 sparkliang (已经收藏) 该链接中还有很多其他的优秀介绍 ——libevent源代码文件组织1 前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2...转载 2016-03-25 15:50:46 · 491 阅读 · 0 评论 -
libevent杂谈
摘自:http://blog.youkuaiyun.com/mafuli007/article/details/7549791 摘自:hoenix_FuliMa libevent是一个优秀的跨平台异步事件驱动库.当然,使用libevent的所有主品中,最有代表性的就是Memcached了.本文主要讲是libevent的在应用上的一些基础知识,大湿们莫笑.最简情形最简单的lib...转载 2016-03-24 19:09:18 · 673 阅读 · 0 评论 -
ACE的框架及其核心
ACE设计框架和基础模块的关联*一、案例描述视频电警开发,是基于ACE框架上的一次重复开发,本文档拟对ACE框架做一个梳理,以期对他人进行基于ace的开发有所帮助。*二、系统安装ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005下安装ACE的过程,希望能给大家一个参考。安装环境:l 操作系统:Windows XP 专业版l 编译环境:VS2005中文版...转载 2016-03-24 18:45:30 · 1087 阅读 · 0 评论 -
采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间...转载 2016-03-24 18:13:09 · 706 阅读 · 0 评论 -
Linux后台网络编程中select/poll/epoll的比较分析
二.poll1.概述和select基本一样,除了poll没有使用低效的三个基于位的文件描述符set,而是采用了一个单独的结构体pollfd数组,由fds指针指向这个组。pollfd结构体定义如下:#include <sys/poll.h>struct pollfd{ int fd;//文件描述符 short events;//fd请求的事件。监视该文件描述...转载 2016-03-22 18:35:24 · 515 阅读 · 0 评论 -
C++ 用libcurl库进行http通讯网络编程
一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证十一、代码示例 1.基本的http GET/PO...转载 2015-11-11 15:07:50 · 485 阅读 · 0 评论 -
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪) 前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是...转载 2014-09-05 10:20:45 · 651 阅读 · 0 评论 -
setsockopt的使用
设置套接口的选项。#include <sys/types.h>#include <sys/socket.h>int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);sockfd:标识一个套接口的描述字。level:选项定义的层次;支持S...原创 2014-07-17 09:44:28 · 973 阅读 · 0 评论 -
浅谈Windows网络模型之完成端口模型
Windows网络模型的最后一种就是完成端口+线程池模型。当需要处理成千上万个套接字的时候就可以使用这种模型。该模型结构十分复杂,而且仅适用于WinNT和Win2000以上的系统。从本质上说,完成端口模型要求我们创建一个 Win32 完成端口对象,通过指定数量的线程,对重叠 I/O 请求进行管理,以便为已经完成的重叠 I/O 请求提供服务。通常情况下,我们会在应用程序中创建一定数量的工作者...转载 2014-09-04 11:22:30 · 1641 阅读 · 1 评论 -
收发ICMP封包,实现ping
转载:https://www.cnblogs.com/luzhiyuan/p/3923092.html转载:https://blog.youkuaiyun.com/qy532846454/article/details/5429700#include "stdafx.h"#include <WINSOCK2.H>#pragma comment(lib, "Ws2_32.lib")#...转载 2018-07-13 11:29:04 · 1129 阅读 · 0 评论 -
linux中 epoll
linux2.6内核epoll用法举例说明 epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数: 所用到的数据结构 typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __...转载 2016-06-13 14:58:49 · 375 阅读 · 0 评论 -
服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
转载:https://www.cnblogs.com/sunxucool/p/3449068.html来自:http://blog.youkuaiyun.com/shootyou/article/details/6622226昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.youkuaiyun.com/shootyou/article/details/6615...转载 2018-11-20 10:06:24 · 203 阅读 · 0 评论 -
Linux 异步IO介绍--相关函数
epollepoll是Linux对select功能的改进,其性能大大提升,而且和监控的IO个数无关。API:epoll_create:***`int epoll_create(int size);`***创建一个`epoll`实例,`size`参数是可监控IO的数量大小,但是Linux 2.6.8之后已不再使用。epoll_ctl:***`int转载 2016-08-17 11:45:01 · 1021 阅读 · 0 评论 -
Nginx基础. eventfd, 异步IO 与epoll的相互协作
摘自: http://blog.youkuaiyun.com/u012062760/article/details/48732555关于eventfd.对于eventfd, 这里只是简单的讲它的功能. 看manpage就足够了, 其中的例子也很容易看懂eventfd函数可以创建一个efd描述符, 该描述符在内核中维护着一个计数器counter. 在调用eventfd时, 可转载 2016-08-17 12:04:33 · 1685 阅读 · 0 评论 -
linux下socket通信,server和client简单例子
server.c ==================================================================== #include // for sockaddr_in#include // for socket#include // for socket#include // for printf#i转载 2016-09-26 09:58:19 · 9919 阅读 · 2 评论 -
client 错误代码
如果是客户端和server端断开之后,connect重连的时候,需要重新创建socket#include // for sockaddr_in #include // for socket #include // for socket #include // for printf #include // for exit原创 2016-10-20 14:33:23 · 1796 阅读 · 0 评论 -
StateThreads--高性能、高并发、高扩展性和可读性的网络服务器架构
译文在后面。State Threads for Internet ApplicationsIntroductionState Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on U转载 2016-10-08 18:05:11 · 886 阅读 · 0 评论 -
fcntl设置FD_CLOEXEC标志作用
转载:https://blog.youkuaiyun.com/ustc_dylan/article/details/6930189通过fcntl设置FD_CLOEXEC标志有什么用?close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。eg:ja...转载 2018-04-03 14:11:27 · 209 阅读 · 0 评论 -
epoll中使用recvfrom 获取不到对端的ip和port
一、epoll 之后的socket recvfrom的时候,需要设置 socklen_t socklen = sizeof(struct sockaddr); //一定要初始化为sizeof,如果为0 则出错m_data_len = recvfrom(m_fd, m_data, sizeof(m_data), 0, (struct sockaddr*)&m_...原创 2018-06-26 00:03:19 · 2159 阅读 · 2 评论 -
linux查看端口占用情况
转载:https://www.cnblogs.com/wangtao1993/p/6144183.html今天要使用python写一个端口探测的小程序,以检测一些特定的服务端口有没有被占用,突然发现自己居然不知道在linux中如何查询端口被占用的情况,天呐,赶快学习一下。转载 2018-07-30 17:56:55 · 167 阅读 · 0 评论 -
Linux 下修改socket接收缓冲区
在进行socket编程有时候可能需要修改下socket的接收缓冲区大小,这里可以使用 setsockopt 函数,但是如果需要修改的缓冲区很大(比如500MB),则还需要修改系统内核的TCP/IP参数,不然接收缓冲区大小会收到内核参数的限制,所以需要改两个地方。下面以把socket接收缓冲区修改为500MB说明一下要作的修改。1、修改内核TCP/IP参数在终端用sysctl命令修改sock...转载 2018-09-11 11:14:10 · 1503 阅读 · 0 评论 -
TCP send数据时 "Program received signal SIGPIPE, Broken pipe."解决
一、现象描述在利用librdkafka同kafka broker通信过程中,当kafka broker意外退出时(如kill -9),librdkafka接口的sendmsg接口报出了“Program received signal SIGPIPE, Broken pipe.” 这个错误具有典型性,根据网络搜索的结果,这个一般是由于向一个被破坏的socket连接或者pipe读写数据造成的,向...转载 2018-09-21 10:39:33 · 2064 阅读 · 0 评论 -
单台服务器并发TCP连接数到底可以有多少
文章转发地址: http://www.52im.net/thread-561-1-1.html 前言 曾几何时我们还在寻求网络编程中C10K问题(有关C10K问题请见文章《The C10K problem(英文在线阅读、英文PDF版下载、中文译文)》)的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。 我们先假设单台服务器最...转载 2018-12-20 13:47:50 · 651 阅读 · 0 评论