第6节 使用邮件槽传输数据
网络通讯的理论很复杂,可是初学者不考虑性能的话,可以使用很简单的模式。一般而言网络通讯有两种模式,点对点模式或者广播模式。点对点模式就像一对一辅导,双方都能听清楚对方说什么,并作出相应的处理,若是因网络故障丢失数据,双方都知道中间出了问题,可以重新发送数据来解决这个故障;广播模式就像课堂教学,老师无法确信受众们都听清了所说的内容,若某个同学因某种原因而丢包,老师并不知道这个包已经被丢失了。
邮件槽分为收件箱和发件箱两类。收件箱接收网络上发来的邮件包,而发件箱向其他电脑(也可以是本机)发送邮件。发送邮件时,需要指定接收者的IP地址,或者使用表示广播给全局域网的收件箱;接收数据稍微复杂点,因为必须事先建好收件箱(CreateMailslot)其他人发给你的邮件才有可能收到,若是其他人发邮件时该收件箱已经被注销,那么就收不到邮件了。在建立邮件槽的时候,邮件槽必须具有下面的形式:\.\mailslot[path]name这个形式中,前缀\.\mailslot\是必不可少的,而且注意都是小写字符。写到C语言程序里,就应该是这样的形式"\\.\mailslot\"。其中的.表示本地计算机。若是想把消息包发送到远程计算机,远程计算机的邮件槽具有“\Computername\mailslot"这样的形式,若是想要广播到全局域网,则应使用"\\mailslot"这样的形式。当然,本地计算机没有创建远程邮件槽的权利,因此不用使用CreatMailslot函数,若想要发送到远程计算机,则使用CreateFile就可以了。
本地计算机名称可以通过GetComputerName函数获得。代码没有给出,请同学们自行查询帮助。
下面以一个共享画板为例。