代码改变世界

Q&A 20090831

2009-08-31 12:29  爱车龟速兔  阅读(199)  评论(0编辑  收藏  举报

Q:

Delegate的返回值问题

A:

如果一个 delegate type 一次只搭载单独一个方法(method),那它就可以搭载任意返回型别及形式的成员函数。然而,如果一个 delegate type 要同时搭载多个方法(methods),那么返回型别就必须是 void[译注2] 例如,Action 就可以用来搭载一个或者多个方法(method)。在 testHarness class 实现中,我们就将使用上述的 Action 声明。

 

 

Q:

MSMQ使用时需要注意的几点:

A:

1: PathName的使用

2: 每个消息的,默认大小限制是4M, 如果需要传输大于4M的消息, 需要更改注册表, 在相应路径下添加键值:HKLM"SOFTWARE"Microsoft"MSMQ"Parameters" 加添一个MaxMessageSize DWORD 值大小默认4M(0x00400000)最大16M(x00F00000),

通过网上查资料, 表明消息最大不能超过16M, 所以建议将消息大小设置为15M.

如果传输超过大小限制的消息: 系统会抛出System.Messaging.MessageQueueErrorCode.InsufficientResources的异常, 表明资源不足

 

 

Q:

爱立信的几种前置机的区别

A:

IOG: 这时爱立信很早的一种交换机的前置机, 用的是某种UNIX环境, 登录上去的典型特征是在USERCODE前会有一个桃心

APG: 这是爱立信后来的前置机, 用的操作系统是WindowsNT, 登录上去是没有桃心的, 并且会显示欢迎来到服务的提示

同时APG中有一种小分类, 是需要登录到域的, 我们叫这中前置机叫做APG40

 

 

Q:

Socket 如何判断连接断开?

A:
在流的末尾:

Stream.Read()

读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)

此方法的实现从当前流中读取最多的 count 个字节,并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数;但是,如果出现异常,流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时,返回值才为零。如果没有任何可用的数据,该实现将一直阻塞到至少有一个字节的数据可读为止。仅当流中不再有其他的数据,而且也不再需要更多的数据(如已关闭的套接字或文件尾)时,Read 才返回 0。即使尚未到达流的末尾,实现仍可以随意返回少于所请求的字节。