看起来WCF TCP连接不是持久的。第一次ping回复需要一段时间,但后续过程所需时间较短。过了一会儿,-another重新连接需要很长时间吗?
SERVER>从net.tcp://0.0.0.0:999开始 创建到net.tcp://localhost:999 //的CLIENT>连接--不是真正的连接,可以连接 在1s163ms //第一个连接中的CLIENT> Ping应答 CLIENT>平安回复为22毫秒//已连接 26毫秒内CLIENT>平答 CLIENT>平安回复24毫秒 CLIENT> Ping回复:325 Re//重新连接 CLIENT>平在19 in的回复 CLIENT>平接767 Re//重新连接
如果为真,则tcp连接在断开之前的空闲时间值是多少?我需要保持联系。
更新修改后的代码:
NetTcpBinding tcpBind = new NetTcpBinding();
tcpBind.ReliableSession.Enabled = true;
tcpBind.ReliableSession.Ordered = true;
tcpBind.ReliableSession.InactivityTimeout = TimeSpan.FromMinutes(10);
ServiceHost svh = new ServiceHost(typeof(ServiceImplementation));
svh.AddServiceEndpoint(
typeof(WCFSimple.Contract.IService),
//new NetTcpBinding(),
tcpBind,
String.Format("net.tcp://{0}:{1}", ip, port));
svh.Open();现在我又犯了一个错误:
此端点不支持操作http://tempuri.org/IService/Pong。此端点只处理2005年2月的WS-ReliableMessaging消息。
Update I只修改了服务器端,并导致了错误。然后我将客户端的TCP修改为可靠的消息传递。
发布于 2011-08-22 05:07:23
我不认为Ping是测试TCP连接的好工具。因为Ping使用ICMP作为它的底层协议,而不是TCP。
我建议您创建一个WCF客户端,连接到服务,然后通过一些网络嗅探工具检查TCP连接,或者使用netstat进行快速检查。
发布于 2011-08-22 07:43:56
通常,WCF连接是短暂的,尽管后台有一些连接池。
使用net.tcp作为传输,持久(长期)连接是可能的。您发布的代码是实现这一目标的一种方法。
有关更多信息和一些替代方案,请访问您需要了解的是有关单向呼叫、回调和事件的信息。,这是2006年10月的一篇MSDN杂志文章。
还可以使用IsInitiating和IsTerminating属性中的OperationContract属性。
https://stackoverflow.com/questions/7053000
复制相似问题