编写TcpClient client = list.AcceptTcpClient();后程序无法打开。

Xyed Xain Haider

我必须在Windows的标签上显示客户端ip地址,这是我编写的代码

    private void Form1_Load(object sender, EventArgs e)
    {
        IPEndPoint end = new IPEndPoint(IPAddress.Any, 8000);
        TcpListener list = new TcpListener(end);
        list.Start();

        TcpClient client = list.AcceptTcpClient();

        label5.Text = client.Client.LocalEndPoint.ToString();
    }

当我在TcpClient client = list.AcceptTcpClient()上发表评论时,我的程序启动了,但绝对不会显示客户端的IP地址

有什么建议吗

彼得·杜尼奥

AcceptTcpClient()是一种阻止方法。如果从Load事件处理程序调用该事件处理程序(该事件处理程序本身在UI线程中调用),则将阻塞应该处理用户界面的线程。直到客户端实际尝试连接并且AcceptTcpClient()方法返回之前,程序中什么都不会发生

您可以通过使用方法的异步版本来解决此问题。例如:

private async void Form1_Load(object sender, EventArgs e)
{
    IPEndPoint end = new IPEndPoint(IPAddress.Any, 8000);
    TcpListener list = new TcpListener(end);
    list.Start();

    TcpClient client = await list.AcceptTcpClientAsync();

    label5.Text = client.Client.LocalEndPoint.ToString();
}

这将使方法在调用Form1_Load()方法时返回AcceptTcpClientAsync(),从而允许UI线程继续工作。如果以及当客户端确实连接时,您的Form1_Load()方法将继续执行,将accept操作的结果复制到client变量中,然后执行下一条语句(即update label5.Text)。

当然,就目前的代码而言,您似乎没有对接受的内容做任何事情TcpClient(除了报告其IP /端口信息之外)。大概您打算添加更多代码来处理实际的客户端连接。在执行操作时,请始终牢记以上几点;您需要始终保持UI线程自由运行,而使用async/await惯用语是做到这一点的最佳方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Getting a DHCP client list with Python

来自分类Dev

如果Tcpclient无法连接

来自分类Dev

使用TcpClient ReceiveTimeout与同步程序

来自分类Dev

C#TCPClient / Socket编写不引发异常

来自分类Dev

单击应用程序的通知横幅后打开iMessage编写器吗?

来自分类Dev

无法打开数据库进行编写

来自分类Dev

无法打开包含文件:“ cpprest / http_client.h”

来自分类Dev

eclispe打开gcm-demo-client时无法解析GCMRegistrar

来自分类Dev

Flutter Web因无法打开文件client.js而崩溃

来自分类Dev

eclispe打开gcm-demo-client时无法解析GCMRegistrar

来自分类Dev

下载后Filezilla程序无法打开

来自分类Dev

下载后Filezilla程序无法打开

来自分类Dev

从Firefox打开Zoom Client应用

来自分类Dev

TcpClient无法通过流正确发送数据

来自分类Dev

使用comtypes.client.CreateObject()后释放安装程序对象

来自分类Dev

使用Client#destroy()后Discord.js无法登录

来自分类Dev

node-rest-client:发送后无法设置标头。

来自分类Dev

“java_client”更新后无法点击组合键

来自分类Dev

Django测试client.login():关闭自动提交功能后,您的数据库后端无法正常运行。在使用“ atomic”之前将其打开

来自分类Dev

java.util.List. <init> () im GenericType-Trikot-Client

来自分类Dev

如何使用List :: Gen编写Collatz序列?

来自分类Dev

Python 创建 List 文件并编写查询

来自分类Dev

无法加载文件或程序集'Microsoft.Xrm.Client

来自分类Dev

TCPClient的NetworkStream超出范围后,TCPClient会发生什么?它被丢弃了吗?

来自分类Dev

无法终止Java .txt编写程序

来自分类Dev

C ++处理文件,无法编写程序

来自分类Dev

LINQ查询后无法获取对象的List <>

来自分类Dev

用C#编写完程序后如何创建程序

来自分类Dev

应用程序打开后循环将无法运行

Related 相关文章

  1. 1

    Getting a DHCP client list with Python

  2. 2

    如果Tcpclient无法连接

  3. 3

    使用TcpClient ReceiveTimeout与同步程序

  4. 4

    C#TCPClient / Socket编写不引发异常

  5. 5

    单击应用程序的通知横幅后打开iMessage编写器吗?

  6. 6

    无法打开数据库进行编写

  7. 7

    无法打开包含文件:“ cpprest / http_client.h”

  8. 8

    eclispe打开gcm-demo-client时无法解析GCMRegistrar

  9. 9

    Flutter Web因无法打开文件client.js而崩溃

  10. 10

    eclispe打开gcm-demo-client时无法解析GCMRegistrar

  11. 11

    下载后Filezilla程序无法打开

  12. 12

    下载后Filezilla程序无法打开

  13. 13

    从Firefox打开Zoom Client应用

  14. 14

    TcpClient无法通过流正确发送数据

  15. 15

    使用comtypes.client.CreateObject()后释放安装程序对象

  16. 16

    使用Client#destroy()后Discord.js无法登录

  17. 17

    node-rest-client:发送后无法设置标头。

  18. 18

    “java_client”更新后无法点击组合键

  19. 19

    Django测试client.login():关闭自动提交功能后,您的数据库后端无法正常运行。在使用“ atomic”之前将其打开

  20. 20

    java.util.List. <init> () im GenericType-Trikot-Client

  21. 21

    如何使用List :: Gen编写Collatz序列?

  22. 22

    Python 创建 List 文件并编写查询

  23. 23

    无法加载文件或程序集'Microsoft.Xrm.Client

  24. 24

    TCPClient的NetworkStream超出范围后,TCPClient会发生什么?它被丢弃了吗?

  25. 25

    无法终止Java .txt编写程序

  26. 26

    C ++处理文件,无法编写程序

  27. 27

    LINQ查询后无法获取对象的List <>

  28. 28

    用C#编写完程序后如何创建程序

  29. 29

    应用程序打开后循环将无法运行

热门标签

归档