请问命名管道和TCP/IP协议到底有什么不同?

zengl 2003-03-17 05:36:48
如题。

命名管道到底是什么东东?
...全文
663 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengl 2003-03-18
  • 打赏
  • 举报
回复
谢谢
lingyunfeipu 2003-03-17
  • 打赏
  • 举报
回复
命名管道(Named Pipes)

  命名管道提供了一个确认的传送技术。与网络上的广播方式不同,你通过一个命名管道与另一台机器建立一个不同的连接。如果连接中断。例如是由于一台机器关掉或者网络的某部分有故障,连接的双方都可以在尝试发送或者接收时,马上知道中断的信息。通过一个命名管道,可确保包顺序到达。命名管道的唯一问题是你不能广播包了。要广播任何信息,所有的目标机器都必须与中央的服务器建立一个连接,服务器必须分别传送信息到各个不同的机器上。

  命名管道的创建只比mailslot难一点。列表4和5的程序展示了如何在两个使用命名管道的应用之间,创建一个简单的点对点连接。首先运行列表4中的接收程序,然后在同一机器上运行列表5中的发送程序。该程序将询问你要连接的机器名字。由于你在同一部机器上运行发送和接收的程序,因此可输入“.”或者是你的机器名。你将会看到每隔5秒左右,就有一个信息由发送者传到接收者上。当你关闭发送者的时候,在接收者上就会马上出现一个信息,指示它已经检测出管道连接中断。如果只启动发送的程序,发送者将会马上出错,因为它不能建立一个连接。与mailslot不同,管道可以告诉我们另一端的工作是否正常。

  命名管道连接在网络上的使用与在同一部机器上一样简单。例如,如果列表4中的服务器程序运行在一部称为“orion”的机器上,使用与该机器同样的帐号和密码在另一台不同的机器上登录,在上面运行列表5的程序,要求机器名时,输入“orion”的名字。这样连接就被正确地建立起来了。要注意一点,使用命名管道的时候,你必须要知道运行服务器的机器名字。

  你还要知道,如果使用另一个用户来尝试连接接收器时,连接将会失败。例如用户“jones”在“orion”的机器上运行接收程序,当用户“smith”尝试由另一台机器进行连接时,连接将会失败,并显示一个“拒绝访问”的错误。这是NT的安全系统造成的
lingyunfeipu 2003-03-17
  • 打赏
  • 举报
回复
命名管道与 TCP/IP 套接字
在快速局域网 (LAN) 环境中,传输控制协议或 Internet 协议 (TCP/IP) 套接字客户端和命名管道客户端在性能方面不相上下。但是,网络速度越慢(如在广域网 (WAN) 或拨号网络上),TCP/IP 套接字客户端与命名管道客户端的性能差异越明显。这是因为进程间通讯 (IPC) 机制在对等项间的通讯方法不同。

对于命名管道,通常网络通信交互性更强。一个对等项直到另一个对等项使用读取命令请求数据时才发送数据。在开始读取数据前,网络读取一般包括一系列窥视命名管道的信息。这在慢速网络中可能花费非常多并导致过多的网络流量,其它的网络客户端反过来也会受到影响。

阐明所讨论的是本地管道还是网络管道也很重要。如果服务器应用程序在运行 Microsoft® SQL Server® 2000 实例的计算机上本地运行,则可以选择本地命名管道协议。本地命名管道以内核模式运行且速度非常快。

对于 TCP/IP 套接字,数据传输的效率更高,开销也更少。数据传输还可以利用 TCP/IP 套接字性能增强机制的优点,如开窗口、延迟确认等,这在慢速网络中可能非常有益。对于应用程序的不同类型,这类性能差异可能非常大。

TCP/IP 套接字还支持待办事项队列,当试图连接到 SQL Server 时,与可能导致管道忙错误的命名管道相比,该队列可以提供有限的平稳效果。

一般情况下,套接字在慢速 LAN、WAN 或拨号网络中效果较佳,而当网络速度不成问题时命名管道则是更好的选择,因为其功能更强、易于使用且提供多种配置选项。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧