首页 » 软件开发

TCP/UDP网络编程入门教程之十七:TCP原理——TCP连接的关闭

       TCP连接一旦建立,服务器端和客户端就成为了对等关系,任何一方都可以发出关闭握手请求,甚至可以同时发出关闭握手请求。TCP的连接建立需要3次握手,而正常关闭则需要4次握手。 1、主动关闭的一方A调用close(),SendQ不再接收send()写入信息,在SendQ队列的最后,向被动关闭的一方发送TCP的IP数据报作为关闭握手的请求。这个数据报中包含着标志FIN,也包含着此刻的字节序号m。阅读全文 »

2015年10月30日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十六:TCP原理——字节流的发送与接收

       从TCP三次握手的原理我们可以看到,TCP有“保障”的连接实际上可以看做是两个单向的连接:一个通道只负责发送,另外一个只负责接收。并且,传送的信息是以字节为单位保证顺序的。 在socket机制中,应用层的程序以send()函数将数据首先发送到本机系统的发送缓存中,我们称之为SendQ,意指这是一个FIFO(先进先出)的队列。阅读全文 »

2015年10月26日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

什么是函数式编程——函数式编程扫盲贴

       1. 概论 在过去的近十年的时间里,面向对象编程大行其道。以至于在大学的教育里,老师也只会教给我们两种编程模型,面向过程和面向对象。 孰不知,在面向对象产生之前,在面向对象思想产生之前,函数式编程已经有了数十年的历史。 那么,接下来,就让我们回顾这个古老又现代的编程模型,让我们看看究竟是什么魔力将这个概念,将这个古老的概念,在21世纪的今天再次拉入了我们的视野。阅读全文 »

2015年10月20日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

TCP/UDP网络编程入门教程之十五:TCP原理——TCP的三次握手(three-way handshake)

       前面3个小节介绍了socket机制对TCP协议三次握手的实现,需要强调的是,与协议独立于实现类似,TCP的三次握手是独立于socket体系的理论。在TCP协议中,三次握手是通过3个TCP格式的IP数据报来实现的。TCP格式的IP数据报中包含着TCP首部,TCP首部信息中包含着对每一个数据报具体内容的描述。阅读全文 »

2015年10月16日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

架构设计之路(五):测试驱动

       上一章我们提到,单元测试只是测试驱动的一个子集;换言之,测试驱动有着更宽广的概念,他要求以“测试”为驱动力,来推动整个开发活动。这个观点似乎非常具有争议性,相当多的人认为其根本不具有可执行性。但很奇怪的是,当我第一眼接触这个观点,我就觉得,它像一道闪电划破长空,它光华璀璨,价值无以伦比!阅读全文 »

2015年10月13日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

5款游戏教你学编程——终于可以快乐的编程了

       这些WEB游戏非常有趣,可以把你带入迷人的编程世界。 1. CodeCombat CodeCombat 是一个 HTML5 角色扮演游戏(RPG),教你基本的编程概念。 在 CodeCombat 中,你扮演一个英雄通过游戏中不同等级的冒险。第一关是 Kithard Dungeon ,里面涵盖了编程的基本概念。阅读全文 »

2015年10月12日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

架构设计之路(四):单元测试

       在带队的过程中,性能的问题还比较好解决,最消极的想法,“好啊,多一事不如少一事,你让我不管还不简单?”,但要求写测试代码,那就炸锅了!以我的经历,“测试驱动”是一个最具争议的话题,没有之一。吹捧者和反对者泾渭分明,而且都有大量的论据和证明。记得曾经有一篇文章,大意是:“公司付钱给你不是让你写测试代码的”,下面一片狂赞。阅读全文 »

2015年10月8日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

架构设计之路(三):性能

       我们在上一篇博客架构设计之路(二):目标中设定了架构的目标,只有一个,就是可维护性。完全没有提性能,这是故意的。 似乎程序员都是急性子,或许是被windows冗长的开机时间折磨够了,有可能是因为提升性能的效果是最显而易见的……总之,我发现,绝大部分程序员对性能的关注和热情是无与伦比的!阅读全文 »

2015年9月30日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

Git使用流程规范——推荐大家这样使用Git

       团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。 下面是ThoughtBot 的Git使用规范流程。我从中学到了很多,推荐你也这样使用Git。 阅读全文 »

2015年9月29日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

架构设计之路(二):目标

       标准来源于目标 前文说过,评价架构好坏是一个很主观的东西。既然大家写出来的程序都能跑,凭什么就说你架构好,我的架构就差?拿出来大家评评理,张三说好,李四说不行,王五说将就……究竟谁说了算?现在已经不是一个迷信权威的时代了,所以不管你多少光环加持,你都得说出子丑寅卯来,都得服众才行。阅读全文 »

2015年9月28日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十四:TCP原理——设计TCP socket的类(下)

       在另外一边的客户端,我们分析一下TCPClientSock的建立过程。... 我们看到TCPClientSock的类与TCPServerSock很类似,构造函数的差别是,TCPClientSock需要提供server端的IP地址和端口号。阅读全文 »

2015年9月28日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

架构设计之路(一):前言

       我学计算机学开发,目的很明确,就是奔着“架构”来的。当然,最初我不知道这个名词,我以为我就是去学“做网站”的。什么时候能够学会?最开始我以为三个月应该够了,然后延期到六个月,再延期到一年、两年……直到现在。在这个过程中, 我算是深刻的体会到“学无止境”,或者“学得越多越觉无知”是什么意思。阅读全文 »

2015年9月24日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十三:TCP原理——设计TCP socket的类(中)

       当激活监听的TCPListenSock等待远程client的connect()握手请求的时候,是调用了accept()并且产生阻塞(默认情况下),如果accept()成功返回意味着conect()握手请求请求成功,这时候就通过accept()产生了一个新的sockFD用于TCP通讯。我们把这个新的sockFD构建为TCPServerSock类:...阅读全文 »

2015年9月21日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2

       话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板的方法,现整理如下文。由于开发板的不同,可能这里出现的问题大家不会都遇到,但相信多数问题都已覆盖。阅读全文 »

2015年9月17日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十二:TCP原理——设计TCP socket的类(上)

       我们之前讲过,socket是一个int的文件描述符(WinSock中直接是一种抽象的描述符),我们通过对这个描述符发出指令操作socket。这是C语言的思想,在面向对象的思想中,最好socket本身是一种对象,各种方法由对象本身发出。用面向对象的思想封装socket并不困难,而且,对于描述socket的概念可能更加直观,这一节,我们边介绍socket和TCP的概念边对socket进行OO封装。阅读全文 »

2015年9月10日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十一:TCP原理——socket异常信息

       之所以把对异常信息的介绍放到原理之前讲,是因为由于socket本身的复杂性,导致了产生各种异常的复杂性。我们应该时刻铭记的是,sokcet本身属于系统(OS),是系统对TCP/IP的实现,也就是说,socket发出的异常信息不代表程序出错,甚至不代表系统出错,而仅仅就是代表socket本身的各种异常情况。另外一点我觉得应该强调的是:socket不是TCP/IP;TCP/IP也不是socket。阅读全文 »

2015年9月8日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之十:WinSock演示程序:TCP Server

       本文主要给大家提供一个Tcp Server的源码例子,各源码所在的文件名已在注释中标出。阅读全文 »

2015年9月2日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之九:win32下使用socket——WinSock

       学习socket最好能有两台以上联网的电脑,以及能获得公网IP的网络接入方式。接下来的教程我会兼顾winsock的代码,这主要是因为winsock本身对socket几乎是兼容的。所以,这里有必要先说明在VC环境中使用socket的一些简单设置,以及与Linux环境下的细微差别。本文使用的VC环境是2008 Express。阅读全文 »

2015年8月11日
作者:鸡啄米 分类:软件开发 浏览: 评论:0

TCP/UDP网络编程入门教程之八:TCP Server端——本部分完整源代码

       本文提供前面教程的完整源代码。阅读全文 »

2015年8月11日
作者:鸡啄米 分类:软件开发 浏览: 评论:1

“三遍读书法”自学编程

       本文译自一老外编程学习者的文章,其经验值得大家借鉴。 我大学本科念的是电子工程专业,所以到那个时候为止,我唯一使用过的编程语言就是C/C++、Assembly、以及 Matlab。后来一个偶然的机会我参加了一个“周末创业”的活动,并且开始渐渐对软件开发和计算机科学感兴趣,然后我发誓我要不择手段地进入这个洋溢着无限魅力的领域。阅读全文 »

2015年8月5日
作者:鸡啄米 分类:软件开发 浏览: 评论:4