在C#中实现套接字侦听器的最佳方法

在C#中实现套接字侦听器的最佳方法,第1张

概述我已经找到了答案,但找不到类似的东西…… 我对C#很新.我需要使用WinForms在C#中创建一个程序.它基本上有两个组件:UI然后我需要有一个永久侦听套接字TCP端口的进程.如果收到了任何内容,那么我需要提出一个类似的事件,以便我可以更新UI. 问题:在程序运行时,实现需要一直监听的进程的最佳方法是什么? 然后,当我收到消息时,如何通知UI它需要更新? 谢谢! 您可以使用等待另一个线程上的传入连 我已经找到了答案,但找不到类似的东西……

我对C#很新.我需要使用WinForms在C#中创建一个程序.它基本上有两个组件:UI然后我需要有一个永久侦听套接字TCP端口的进程.如果收到了任何内容,那么我需要提出一个类似的事件,以便我可以更新UI.

问题:在程序运行时,实现需要一直监听的进程的最佳方法是什么?

然后,当我收到消息时,如何通知UI它需要更新?

谢谢!

解决方法 您可以使用等待另一个线程上的传入连接的TcpListener.每次收到新连接时,都要创建一个新线程来处理它.使用Control.Invoke从非UI线程更新UI.这是一个简短的例子:
public MainForm(){    InitializeComponents();    StartListener();}private TcpListener _Listener;private Thread _ListenerThread;private voID StartListener(){    _ListenerThread = new Thread(RunListener);    _ListenerThread.Start();}private voID RunListener(){    _Listener = new TcpListener(IPAddress.Any,8080);    _Listener.Start();    while(true)    {        TcpClIEnt clIEnt = _Listener.AcceptTcpClIEnt();        this.Invoke(            new Action(                () =>                {                    textBoxLog.Text += string.Format("\nNew connection from {0}",clIEnt.ClIEnt.RemoteEndPoint);                }            ));;        ThreadPool.QueueUserWorkItem(ProcessClIEnt,clIEnt);    }}private voID ProcessClIEnt(object state){    TcpClIEnt clIEnt = state as TcpClIEnt;    // Do something with clIEnt    // ...}
总结

以上是内存溢出为你收集整理的在C#中实现套接字侦听器的最佳方法全部内容,希望文章能够帮你解决在C#中实现套接字侦听器的最佳方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存