c# WCF 可以像socket那样监听吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 那样是不可能的,你可以二者结合使用本回答被提问者采纳
C# 或 C++ ;可以像在 CE 中那样修改内存吗? [关闭]
【中文标题】C# 或 C++ ;可以像在 CE 中那样修改内存吗? [关闭]【英文标题】:C# or C++ ; It is possible to modify memory like in CE? [closed] 【发布时间】:2018-02-04 19:12:24 【问题描述】:有可能像 CE 那样修改记忆吗? 比如:
原创:
je 011D5F29
修改:
jmp 011D5F6E
在 C# 中可以做到吗? 如果不是,那么 C++ 有可能吗?
如果在 C# 或 C++ 中可行,请将代码发送给我 感谢您阅读 :)
【问题讨论】:
我忘了说我需要修改另一个应用的内存 【参考方案1】:它在 C/C++ 中是可行的。如果您有一个寄存器(例如在微控制器中)并且您希望读取该值(因为它可以在您的代码之外更改,硬件方面),那么您可以
#define PORTBASE 0x40000000
unsigned int volatile * port = (unsigned int *) REG;
*port = value; /* write to port */
value = *port; /* read from port */
Source
我不确定它是否可以在 C# 中完成。
希望这是相关的。
【讨论】:
高度依赖操作系统(你正确地给出了微控制器的例子,古老的 DOS 也是如此)。在大多数现代系统上是不可能的。 ...似乎在 C# 中可以进行非常“黑客攻击”(禁用安全等...),但由于操作系统而无法正常工作以上是关于c# WCF 可以像socket那样监听吗?的主要内容,如果未能解决你的问题,请参考以下文章
WCF - 是不是可以使用 HttpListener 或套接字来监听 WCF ChannelFactory
C# 或 C++ ;可以像在 CE 中那样修改内存吗? [关闭]