asp.net 简单TcpListener挂起

qpgpyjmq  于 2022-11-26  发布在  .NET
关注(0)|答案(1)|浏览(128)

下面是我正在尝试的代码:(这只是为了了解TCP的工作原理。)在我的PC上:

listener = new TcpListener(IPAddress.Any, 3000);
listener.Start();
using (TcpClient client = listener.AcceptTcpClient())
...

And on the server in the event handler of an asp.net button:

using (var wc = new MyWebClient())
{
    byte[] received = wc.UploadData("http://my ip here:3000", new byte[] { 1 });
    Label1.Text = Encoding.UTF8.GetString(received);
}

我禁用所有防火墙,在我的PC上运行第一个代码,然后单击页面的按钮(在我的浏览器中)运行第二个代码。
第一个只在最后一行等待。为什么?它应该在接收请求。
如果有更好的方法在PC上接收请求(例如,像网页),我想听听。

    • 编辑**:

MyWebClient只是一个具有有限超时的WebClient

class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest request = base.GetWebRequest(uri);
        request.Timeout = 10 * 1000;
        return request;
    }
}
wfypjpf4

wfypjpf41#

通过在try catch中 Package TcpListener.Start(),我能够得到一个异常。(net60)
重新启动hns服务,然后我能够运行没有问题。

net stop hns
net start hns

我不会说这是一个修复,但它解释了一些关于底层结构的事情。我会期望程序持有套接字,而不是服务。

相关问题