WCF客户端可以关闭与服务的链接吗,让软件也可以照常运用,现有的只有打包好的软件和配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF客户端可以关闭与服务的链接吗,让软件也可以照常运用,现有的只有打包好的软件和配置文件相关的知识,希望对你有一定的参考价值。

我有个软件,.net的,由于涉及到个人信息,想问下能不能关闭五服务之间的WCF,能不能通过修改WCF的配置文件修改?怎么修改?

参考技术A 这种客户端软件关了服务的连接没法运行的.因为一般这样的软件所有业务行为都是有服务器实现的,客户端只是一个交互工具,关了服务连接怎么用呀.

c# WCF 可以像socket那样监听吗?

能给几句监听的代码或者简单的例子吗?谢谢了
服务器和客户端通信是怎么实现的?
WCF你能用UDP协议吗?

当然可以监听啦,如:
namespace WCFChatService

class Program

static void Main(string[] args)

NetTcpBinding bind = new NetTcpBinding();
Uri uri = new Uri(ConfigurationManager.AppSettings["conAddress"]);//从配置文件中读取服务的Url
ServiceHost host = new ServiceHost(typeof(WCFChatService.ChatService), uri);
host.Open();
Console.WriteLine("聊天室服务器开始监听: endpoint 0", uri.ToString());
Console.WriteLine("按 ENTER 停止服务器监听...");
Console.ReadLine();
host.Abort();
host.Close();



WCF的通信程序也是要分客户端和服务器端得,和socket的通信方式比较类似。
WCF中有个绑定的概念,描述了服务传输的通信方式,使用绑定可以指定:传输的协议,安全要求,编码方式,事务处理要求,可靠性等。现有的绑定中,没有支持UDP协议的,主要以TCP和HTTP为主。
参考技术A // 启动线程 启动监听按钮
private void button1_Click(object sender, EventArgs e)

  Thread th = new Thread(new ThreadStart(handleSc));
  th.IsBackground = true;
  th.Start();


private void handleSc()

int port = 8080;
port = System.Convert.ToInt32(strSPort);
string hostIp = "127.0.0.1";
hostIp = textBox4.Text;
IPAddress ip = IPAddress.Parse(hostIp);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket recvSocket = null;
Socket sS = null;
while (true)

try

// 创建一个Socket类
sS = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定端口
sS.Bind(ipe);
sS.ReceiveTimeout = INT_TIMEOUT;
// 开始监听
sS.Listen(0);
// 为新建连接创建新的Socket
recvSocket = sS.Accept();
............

catch(...)

.....


参考技术B <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JavaScript事件监听完整实例(含注释)</title>
<meta name="generator" content="editplus" />
<meta name="Keywords" content="AddEventHandler,addEventListener,attachEvent,appendChild,getElementsByTagNamem,createElement,createTextNode,IE与FF兼容性,JavaScript事件,JavaScript监听">
<script type="text/javascript">
var oEventUtil = new Object();
oEventUtil.AddEventHandler = function(oTarget,sEventType,fnHandler)

//IE和FF的兼容性处理
//如果是FF
if(oTarget.addEventListener)
oTarget.addEventListener(sEventType,fnHandler,false);

//如果是IE
else if(oTarget.attachEvent)
oTarget.attachEvent('on'+sEventType,fnHandler);
else
oTarget['on'+sEventType] = fnHandler;

;
//定义oT事件函数
var oT = function()

var oEvent = arguments[0];
var oTarget = oEvent.target || oEvent.srcElement;
alert(oTarget.tagName+'\n'+oTarget.innerHTML+'\n'+oEvent.type);

//页面加载时制造36个p,每个p里面显示的文字是Line + i
window.onload = function()
for(var i = 0;i<36;i++)

var oP = document.createElement('p');
var oText = document.createTextNode('Line'+i);
oP.appendChild(oText);
//在文档的第一个div里面添加这些p
document.getElementsByTagName('div')[0].appendChild(oP);

//找到所有的p,并添加click的事件监听
var oPList = document.getElementsByTagName('p');
for(var i = 0;i<oPList.length;i++)

oEventUtil.AddEventHandler(oPList[i],'click',oT);


</script>
<style type="text/css">
*

margin:0px;
padding:0px;

div

margin:10px auto;
width:690px;
border:solid 1px #000;
min-height:600px;
padding:20px;

div p

padding:4px;
margin-left:4px;
margin-top:4px;
border:solid 1px blue;
width:100px;
float:left;

pre
margin:20px 0 0 0;

a

text-indent:4em;

</style>
</head>
<body >
<div>
</div>
</body>
</html>
这个看看行不行 够不够你满足

怎么实现的问题:
可以向下这样的情景:
假如有三台机器:A、B、C
A是web服务器 B是一个客户机 C是另一个客户机

B通过浏览器向A发送了Data,而A又把这个Data发给C
C在登陆时同时开一个端口进行检听A的消息.此时A记录C登陆状态和IP
当B登陆时,A根据帐号信息查看登陆状态,如果已登陆,则通过先前保留的IP发送消息至C处理
web服务器与桌面客户端通信可以通过socket做到

WCF的Tcp Listener只处理符合NET message framing protocol的tcp请求.
还是用Socket吧!
参考技术C 像scoket 那样是不可能的,你可以二者结合使用本回答被提问者采纳

以上是关于WCF客户端可以关闭与服务的链接吗,让软件也可以照常运用,现有的只有打包好的软件和配置文件的主要内容,如果未能解决你的问题,请参考以下文章

WCF回调实现[关闭]

我可以在不设置内容类型的情况下调用 WCF 服务吗?

WPF API 可以安全地用于 WCF 服务吗?

WCF分布式事务

什么是 Azure 和 .NET 服务?与 WCF 服务有任何关联吗?

为非托管 C++ 客户端创建 WCF 服务