Linux
Linux
Linux
Linux socket
socket
socket
socket 编程入门(一) TCP
TCP
TCP
TCP server
server
server
server 端: 1
1
1
1 、建模
作者:龙飞
绝大部分关于 socket 编程的教程总是从 socket 的概念开始讲起的。要知道, socke t
的初衷是个庞大的体系 ,
TCP/IP
只是这个庞大体系下一个很小的子集 , 而我们真正能用上的更
是这个子集中的一小部分 : 运输层 ( Host-to-Host Transport Layer ) 的 TCP 和 UDP 协议
,
以及使用这两个协议进行应用层( Application Layer )的开发。即使是 socket 的核心部分,
网络层 ( Internet Layer ) 的 IP 协议 , 在编程的时候我们也很少会感觉到它的存在 —— 因为已
经被封装好了 , 我们唯一需要做的事情就是传入一个宏 。 第一节我想介绍的概念就这么多 , 当然
,
既然我们已经说了 3 个层了 , 我想最好还是把最后一个层也说出来 , 即所谓链路层 ( Network
Access Layer ) , 它包括了物理硬件和驱动程序 。 这四个层从底到高的顺序是 : 链路层--网
络层--运输层--应用层。
好 , 说实话我们现在并不清楚所谓 TCP 到底是什么东东 , 不过我们知道这东东名气很大
。
或许你早就知道,另外一个声名狼藉建立在 TCP 协议基础上的应用程序,它曾经几乎是统治了
一个时代,即使是今天,我们依然无法消除他的影响力的
——
恩,是的,就是
telnet
。
在这个教程中,我使用的环境是 Debian GNU/Linux 4.0 etch 。传说中的 stable -_
-!!! ,恩,我是很保守的人。如果你不是自己 DIY 出来的系统,相信默认安装里面就应该有 tel
net ( /usr/bin/telnet ,要是没装就自己 aptitude install 吧)。 telnet 可以与所有遵循 TC P
协议的服务器端进行通讯。通常, socket 编程总是 Client/Server 形式的,因为有了 telnet
,
我们可以先不考虑 client 的程序 , 我们先写一个支持 TCP 协议的 server 端 , 然后用 telnet 作
为 client 验证我们的程序就好了。
server 端的功能 , 我们也考虑一种最简单的反馈形式 : echo 。 就如同你在终端输入 ech
o 'Hello World' , 回车后 shell 就会给你返回 Hello World 一样 , 我们的第一个 TCP serve r
就用以实现这个功能。
什么样的模型适合描述这样的一种 server 呢?我相信 , 一个很 2 的例子会有助于我们记
忆 TCP server 端的基本流程。
想象你自己是个小大佬 , 坐办公室 ( 什么样的黑社会做办公室啊?可能是讨债公司吧 ^^
)
你很土 , 只有一个小弟帮你接电话 ( 因为你自己的号码是不敢对外公开的 ) 。 一次通讯的流程大