我们能在ASP.NET/WCF中进行套接字编程吗?就像服务侦听一个端口以等待传入请求。来自网络外部的所有客户端也会发布/侦听该ip:port。
每当服务在端口上写入任何内容时,所有客户端都会收到该内容而无需轮询。
ASP.NET/WCF是否支持这样的功能?
谢谢。
每当服务在端口上写入任何内容时,所有客户端都会收到该内容而无需轮询。
ASP.NET/WCF是否支持这样的功能?
谢谢。
正如alexanderb提到的,System.Net.Sockets命名空间中确实有.NET套接字支持。我刚和同事一起完成了一个WCF Web服务,该服务与韩国基于套接字的服务进行通信。我们只是发送一些信息并快速整理返回一些信息。以下是一些套接字代码示例:
const string ipAddressString = "xxx.xxx.xxx.xxx";// replace with correct IP address
IPAddress ipAddress = IPAddress.Parse(ipAddressString);
const int portNum = 1234;// replace with correct port
IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, portNum);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(remoteEndPoint);
string sendString = "some stuff you want to send";
byte[] bytes = Encoding.UTF8.GetBytes(sendString.ToString());
client.Send(bytes);
byte[] receiveBuffer = new byte[128];
client.Receive(receiveBuffer, 0, receiveBuffer.Length, SocketFlags.None);
string bufferString = Encoding.GetEncoding(949).GetString(receiveBufferSize);
client.Shutdown(SocketShutdown.Both);
client.Close();
为了保持简单和专注于套接字,本文省略了try-catch等内容。关键要点在于Socket的构造、Connect()
、Send()
和Receive()
。还有Shutdown()
和Close()
。请注意,在三天前之前,我认为Socket是墙上插东西的那个东西,所以这应该是相当基础的。但是,它确实可以工作!
如果你在谈论WCF/ASP.NET,那么这两个比套接字层次高得多。 回答你的问题 - 是的,你可以使用.NET框架进行套接字编程。
http://msdn.microsoft.com/en-us/library/system.net.sockets.aspx
编辑
顺便说一下,当我听到“套接字……云”时,我感觉有些不对劲,你可能遗漏了某些东西。考虑到当前可用的分布式/网络编程技术,现在进行套接字编程似乎是不合逻辑的。
即使您真的可以在Asp.Net中进行套接字编程,您试图做的事情也不会起作用。 Asp.Net不像服务一样持续“运行”。它在一段时间内(没有Web请求)之后关闭,并在新的Web请求时重新启动。您的套接字代码只会在Web请求发生时运行,直到发生不活动超时为止。
你不需要WCF或ASP.NET来做那件事。你可以查找使用.NET的UDP套接字编程。