想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
《TCP/IP详解 卷1:协议》在线阅读版(52im.net)

附录C sock程序

微信扫一扫关注! * 即时通讯网(52im.net)独家整理,仅为方便个人学习和研究之用,版权归出版方所有,请支持正版。

* 也欢迎关注我的公众号”即时通讯技术圈“,一起学习、一起进步!

在本书中一直使用一个称为sock的小测试程序,用来生成TCP和UDP数据。它既可以用作一个客户进程,也可以用作一个服务器进程。有这样一个可以从外壳程序执行的测试程序,使我们避免了为每一个我们想要研究的特征编写新的客户和服务器C程序。因为本书的目的是了解网络互联协议,而不是网络编程,所以在这个附录中我们只描述这个程序和它不同的选项。

有很多与sock功能类似的程序。Juergen Nickelsen写了一个称为socket的程序,Dave Yo st写了一个称为sockio的程序。两者都包含了很多类似的特征。sock程序的某些部分也受到了Mike Muuss和Terry Slattery所写的公开域ttcp程序的启发。

sock程序运行在以下四种模式之一:

1)交互式客户:默认模式。程序和一个服务器相连,然后将标准输入的数据传给服务器,再将从服务器那里接收到的数图C-1sock程序作为交互式客户的默认操作据复制到标准输出。如图C-1所示。

附录C sock程序_即时通讯网(52im.net)

我们必须指明服务器主机的名字和想要连接的服务的名字。主机可指明为点分十进制数,服务可指明为一个整数的端口号。从sunbsdi与标准的echo服务器(1.12节)相连,回显我们键入的每一个字符:

附录C sock程序_即时通讯网(52im.net)

2)交互式服务器:指明-s选项。需要指明服务名字(或端口号):

sun % sock -s 5555        作为一个在端口 555 监听的服务器

程序等待一个客户的连接请求,然后将标准输入复制给客户,将从客户接收到的东西复制到标准输出。在命令行中,端口号之前可以有一个因特网地址,用来指明接收哪一个本地接口上的连接:

sun % sock -s 140.252.13.33 5555        只接受来自以太网的连接

默认的模式是接受任何一个本地接口上的连接请求。

3)源客户:指明-i选项。在默认情况下,将一个1024字节的缓存写到网络中,写1024

次。-n选项和-w选项可以改变默认值。例如,

sun % sock -i -n12 -w4096 bsdi discard

把12个缓存,每个包含4096字节的数据,送给主机bsdi上的discard服务器。

4)接收器服务器:指明-i选项和-s选项。从网络中读数据然后扔掉。这些例子都使用了TCP(默认情况),-u选项指明使用UDP。

sock程序有许多选项,用于对程序的运行提供更好的控制。我们需要使用这些选项来产生本书中用到的所有测试条件。

附录C sock程序379

附录C sock程序_即时通讯网(52im.net)

380TCP/IP详解,卷1:协议

附录C sock程序_即时通讯网(52im.net)

打赏
分享
打赏站长 JackJiang ×
使用微信打赏! 使用支付宝打赏!