socket如何监听

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket如何监听相关的知识,希望对你有一定的参考价值。

参考技术A 初始化一个socket服务,然后就可以绑定一个端口,用个循环就能实现监听了

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 那样是不可能的,你可以二者结合使用本回答被提问者采纳

以上是关于socket如何监听的主要内容,如果未能解决你的问题,请参考以下文章

C++ SOCKET编程,如何监听多个端口,比如监听两个端口,关键代码该怎么写,求教求教,求代码!

如何配置 socket.io 来监听客户端

Python 监听套接字是如何设置的?

如何像前台服务一样启动 socket.io 以保持连接并监听消息

Socket.io 执行后删除监听器

一个基于Socket的http请求监听程序实现