Linux网络编程
FishBear_move_on
github 地址 https://github.com/Jayhello
展开
-
Linux网络编程书籍
原文转载:http://blog.csdn.net/21aspnet/article/details/6694485首先要说讲述计算机网络和TCP/IP的书很多。 1. 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛转载 2017-09-16 19:36:13 · 348 阅读 · 0 评论 -
使用事件驱动模型实现高效稳定的网络服务器程序
http://www.cnblogs.com/hnrainll/p/3625597.html前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞 吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力转载 2015-03-09 20:11:09 · 472 阅读 · 0 评论 -
使用 libevent 和 libev 提高网络应用性能——I/O模型演进变化史
http://blog.csdn.net/hguisu/article/details/38638183(牛逼100多名) 构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。 有许多解决方案,但事件驱动也被广泛应用到网络编程中。并大规模部署在高连接数高吞吐量的服务器程序中,如转载 2015-03-17 20:47:17 · 625 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步I/O模型
作者:huangguisu 原文出处:http://blog.csdn.net/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:转载 2015-03-07 12:13:44 · 448 阅读 · 0 评论 -
Linux网络编程之使用TCP传输文件
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8976263,作者:gqb666 最近在写Linux网络方面的demo,用TCP实现了一个简单的传输文件程序,适用于网卡设备及TCP/IP协议栈及网络环境测试时使用。用法容易,代码简洁,已经测试成功。其功能是使用TCP协议从cli转载 2015-03-07 12:13:38 · 1199 阅读 · 0 评论 -
TCP为什么需要3次握手与4次挥手
http://blog.csdn.net/xifeijian/article/details/12777187 (排名655)为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟转载 2015-03-05 08:31:48 · 554 阅读 · 0 评论 -
Linux 服务器模型
http://blog.csdn.net/lingfengtengfei/article/details/12348903 Linux 服务器模型分类: linux 奇淫技巧2013-10-07 10:25 1772人阅读 评论(7) 收藏 举报此篇文章禁止转载,如若转载,请在下面联系我,谢谢~from转载 2015-03-05 09:12:57 · 386 阅读 · 0 评论 -
TCP为什么需要3次握手与4次挥手
http://blog.csdn.net/xifeijian/article/details/12777187为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。转载 2015-03-04 23:28:46 · 1308 阅读 · 0 评论 -
HTTP POST GET 本质区别详解
一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETEURL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POS转载 2015-01-05 21:13:55 · 532 阅读 · 0 评论 -
linux select函数详解
http://blog.csdn.net/lingfengtengfei/article/details/12392449在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中转载 2015-01-03 08:49:58 · 610 阅读 · 0 评论 -
TCP/IP详解之 《网络协议》图解 TCP 连接建立与释放
http://blog.csdn.net/chenhanzhun/article/details/41622555注:TCP 连接的建立和释放在网络协议中是比较重要的,由于本人理解也不是很透彻,欢迎各位批评指正。前言 TCP 是面向连接的、可靠的字节流协议。因此,在传输数据之前通信双方必须建立一个 TCP 连接,建立 TCP 连接需要在服务器和客户转载 2015-01-04 12:08:09 · 680 阅读 · 0 评论 -
高性能网络编程7--tcp连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp]转载 2015-01-02 15:56:14 · 622 阅读 · 0 评论 -
高性能网络编程2----TCP消息的发送
http://blog.csdn.net/russell_tao/article/details/9370109在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发转载 2015-01-02 15:46:10 · 498 阅读 · 0 评论 -
高性能网络编程(一)----accept建立连接(陶辉)
http://blog.csdn.net/russell_tao/article/details/9111769最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功转载 2015-01-02 15:22:50 · 800 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
一、TCP段格式:TCP的段格式如下图所示源端口号与目的端口号源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。序列号序号表示在这个报文段中的第一个数据字节序号。确认号仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号。头部长度4位,TCP头部最多60个字节,最少20个转载 2015-01-01 15:46:05 · 763 阅读 · 0 评论 -
对libevent+多线程服务器模型的C++封装类
最近在看memcached的源码,觉得它那种libevent+多线程的服务器模型真的很不错,我将这个模型封装成一个C++类,根据我的简单测试,这个模型的效率真的很不错,欢迎大家试用。这个类的使用方法很简单(缺点是不太灵活),只要派生一个类,根据需要重写以下这几个虚函数就行了://新建连接成功后,会调用该函数virtual void ConnectionEvent(Conn *conn转载 2015-04-05 22:56:18 · 955 阅读 · 0 评论 -
Makefile经典教程(掌握这些足够)
http://blog.csdn.net/ruglcc/article/details/7814546拉轰的专栏少壮不努力 老大徒伤悲目录视图摘要视图订阅新版极客头条上转载 2015-07-07 18:41:41 · 2560 阅读 · 0 评论 -
套接字中SO_REUSEPORT和SO_REUSEADDR的区别
http://blog.csdn.net/Yaokai_AssultMaster/article/details/68951150Socket的基本背景在讨论这两个选项的区别时,我们需要知道的是BSD实现是所有socket实现的起源。基本上其他所有的系统某种程度上都参考了BSD socket实现(或者至少是其接口),然后开始了它们自己的独立发展进化。显然,BSD本身也是随着转载 2017-08-12 16:26:28 · 1643 阅读 · 0 评论 -
跟我一起写Makefile:MakeFile介绍
http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:MakeFile%E4%BB%8B%E7%BB%8Dmakefile 介绍make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序。首先,我们用一个示例来说明mak转载 2017-05-07 18:44:37 · 264 阅读 · 0 评论 -
TCP socket心跳包示例程序
http://blog.csdn.net/lisonglisonglisong/article/details/51327695#comments在做游戏开发时,经常需要在应用层实现自己的心跳机制,即定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性。在TCP socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比转载 2017-05-03 19:33:57 · 525 阅读 · 0 评论 -
高性能网络编程(一)—-ACCEPT建立连接
http://taohui.pub/2016/01/25/%E9%AB%98%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%EF%BC%88%E4%B8%80%EF%BC%89-accept%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5/高性能网络编程(一)—-ACCEPT建立连接高性能转载 2017-04-15 19:45:40 · 782 阅读 · 0 评论 -
从运行原理及使用场景看Apache和Nginx
http://yansu.org/2014/02/15/apache-and-nginx.html本文只作为了解Apache和Nginx知识的一个梳理,想详细了解的请阅读文末参考链接中的博文。Web服务器Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。应用层使用HTTP协议。HTML文档格式。浏览器统一资源定位器(转载 2017-04-02 18:13:09 · 309 阅读 · 0 评论 -
Lighttpd1.4.20源码分析之状态机(1)---状态机总览
http://www.cnblogs.com/kernel_hcy/archive/2010/03/24/1694203.html前面讲了lighttpd的fdevent系统,从这一篇开始,我们将进入lighttpd的状态机。状态机可以说是lighttpd最核心的部分。lighttpd将一个连接在不同的时刻分成不同的状态,状态机则根据连接当前的状态,决定要对连接进行的处理以及下一步要进转载 2016-08-03 23:13:53 · 544 阅读 · 0 评论 -
实时消息传输协议 RTMP(Real Time Messaging Protocol)
http://blog.csdn.net/defonds/article/details/17403225 译序:本文是维基百科关于 RTMP 的解释, 关于 RTMP 官方规范参见 RTMP 规范,关于 RTMP 官方规范的中文版,参见《Adobe 官方公布的 RTMP 规范》。以下是维基百科原文: 实时消息传输协议(RTMP)最初是由 Macr转载 2016-04-13 10:31:37 · 1160 阅读 · 0 评论 -
支付宝即时到帐接口的python实现,示例采用django框架
http://blog.csdn.net/hornbills/article/details/40338949因工作需要研究了支付宝即时到帐接口,并成功应用到网站上,把过程拿出来分享。即时到帐只是支付宝众多商家服务中的一个,表示客户付款,客户用支付宝付款,支付宝收到款项后,马上通知你,并且此笔款项与交易脱离关系,商家可以马上使用。即时到帐只对企业转载 2016-03-21 18:32:47 · 2228 阅读 · 0 评论 -
C++11网络编程
Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台。十行代码即可完成一个完整的网络服务器。下面是echo服务器的代码:#include >using namespace std;using namespace handy;int main(int argc, const char* argv[]) { EventBase bases; //事件转载 2015-12-26 22:51:19 · 890 阅读 · 0 评论 -
HTTP server git
http://fuzhii.com/2015/05/09/httpserver/基于QT的QTcpServer类实现简单的HTTP服务器Tinyhttpd。代码存放在Github。QThread和QTimer设置当子类化QThread时,构造函数在旧线程中执行,然而run()在新线程中执行。如果一个成员变量的访问来自两个函数,然后从两个不同的线程访问变量,需要检查这转载 2015-12-10 22:16:34 · 449 阅读 · 0 评论 -
Epoll详解及源码分析
Author:Echo Chen(陈斌)Email:chenb19870707@gmail.comBlog:Blog.csdn.net/chen19870707Date:Jan.7th, 2015 1.什么是epollepoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和s转载 2015-11-21 23:19:30 · 571 阅读 · 0 评论 -
高并发服务端分布式系统设计概要(上)
http://www.cnblogs.com/ccdev/p/3338412.html ======张峻崇 原创。转载请注明出处。====== 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然转载 2015-10-28 15:06:55 · 398 阅读 · 0 评论 -
C语言开发Linux下web服务器(支持GET/POST,SSL,目录显示等)
http://blog.csdn.net/yueguanghaidao/article/details/8450938这个主要是在CSAPP基础上做的,添加了POST,SSL,目录显示等功能。一、实现功能:1.支持GET/POST方法2.支持SSL安全连接即HTTPS3.支持CGI4.基于IP地址和掩码的认证5.目录显示6.日志功能转载 2015-11-05 23:08:49 · 685 阅读 · 0 评论 -
recv函数说明返回值
客户端的程序连接上服务器后recv函数阻塞接受,有时会返回0,说明接收超时服务器主动断开了连接,需要重新connect服务器,但重新connect时会报“Transport endpoint is already connected”!!!返回0时正确处理方法是什么呢,大虾指教啊!!!!!现象:说明服务器主动断开了客户端的连接客户端应该调用close关闭,然后再连接原因:转载 2015-09-11 23:37:30 · 6474 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
http://blog.csdn.net/jnu_simba/article/details/8957242一、ISO/OSI参考模型OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层,如转载 2015-01-01 15:43:01 · 551 阅读 · 0 评论 -
non-blocking I/O Multiplexing + poll/epoll 的正确使用
在前面的文章中曾经粗略讲过poll,那时是用阻塞IO实现,在发送和接收数据量都较小情况下和网络状况良好的情况下是基本没有问题的,read 不会只接收部分数据,write 也不会一直阻塞。但实际上poll IO复用经常是跟非阻塞IO一起使用的,想想如果现在内核接收缓冲区一点数据没有,read 阻塞了,或者内核发送缓冲区不够空间存放数据,write 阻塞了,那整个事件循环就会延迟响应,比如现在又有转载 2015-01-02 21:37:26 · 550 阅读 · 0 评论 -
计算机网络术语详解
假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也转载 2014-12-29 16:22:48 · 590 阅读 · 0 评论 -
网关和路由器的区别
网关和路由的区别 顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。 按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。 那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络转载 2014-12-29 16:11:35 · 1469 阅读 · 0 评论 -
linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
一、epoll 系列函数简介#include int epoll_create(int size);int epoll_create1(int flags);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_even转载 2014-12-11 16:55:59 · 489 阅读 · 0 评论 -
基于epoll的简单的http服务器
http://blog.csdn.net/fangjian1204/article/details/34415651该http服务器已经可以处理并发连接,支持多个客户端并发访问,每个连接可以持续读写数据,当然,这只是一个简单的学习例子,还有很多bug,发表出来只是希望大家可以互相学习,我也在不断的改进,希望大家有什么意见可以多多指点,谢谢server.h转载 2014-12-29 19:00:28 · 565 阅读 · 0 评论 -
深入剖析Socket实现
http://blog.csdn.net/zapldy/article/details/5813984 在我们平时的开发中用到的最多的是HTTP协议,而HTTP协议本身是一种应用层协议,属于文本协议;并且这种协议也基本上满足了应用的大部分需求。HTTP协议当初的设计并没有想到它应用的是如此的广泛,所以设计的时候考虑的比较简单实用,也许也就是这种简单实用才这么广泛;但如今,HTTP协议似乎并转载 2014-12-11 17:03:07 · 502 阅读 · 0 评论 -
linux网络编程之socket(十四):基于UDP协议的网络程序
原文 http://blog.csdn.net/jnu_simba/article/details/9077455一、下图是典型的UDP客户端/服务器通讯过程下面依照通信流程,我们来实现一个UDP回射客户/服务器 #include #include ssize_t send(int sockfd, const void *b转载 2014-12-11 16:49:44 · 583 阅读 · 0 评论 -
linux网络编程之socket(十二):select函数的并发限制和 poll 函数应用举例
一、用select实现的并发服务器,能达到的并发数,受两方面限制1、一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n来调整或者使用setrlimit函数设置, 但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看2、select中的fd_set集合容量的限制(FD_S转载 2014-12-11 16:58:24 · 566 阅读 · 0 评论