首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TcpListener主动拒绝连接

TcpListener主动拒绝连接
EN

Stack Overflow用户
提问于 2012-08-01 01:43:54
回答 1查看 3.1K关注 0票数 2

我正在维护一个使用TcpListener侦听传入通信的应用程序。下面的代码打开连接:

代码语言:javascript
复制
Dim listener As TcpListener
_listenFailed = False
Try
    listener = New TcpListener(System.Net.IPAddress.Parse(Me.Host), Me.Port)
    listener.Start()
Catch ex As Exception
    ' an error here means the settings are likely bogus
    _listenFailed = True
    Return
End Try

While Not _stoplistening
{
    ' Accept connection
}

我遇到的问题是,当我从另一台计算机发送文件时,我收到错误消息“无法建立连接,因为目标计算机主动拒绝了它。”

我已经检查了防火墙和杀毒软件,没有拦截。我用过

代码语言:javascript
复制
netstat -a -n

以确定该端口是否处于活动状态并正在侦听。这两个应用程序都是在管理员模式下从Visual Studios运行的,这并不是说这应该会有所不同。我在accept连接代码的第一行设置了一个断点,但它从未运行过。

我停止了应用程序并检查了TcpListener,如果我深入挖掘,就会发现有几个错误。在TcpListener.LocalEndpoint.IPEndPoint.IPAddress.Address.ErrorCode中出现错误10045,"OperationNotSupported“。此外,在TcpListener.Socket.RemoteEndPoint.ErrorCode中还出现了错误1057,“发送或接收数据的请求被禁止,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)没有提供地址。我不知道这两个错误是否相关。

如果任何人对可能导致这个问题的原因有任何见解,或者可以采取哪些步骤来追踪问题的根源,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-01 20:50:15

尝试更改此设置:

代码语言:javascript
复制
listener = New TcpListener(System.Net.IPAddress.Parse(Me.Host), Me.Port)

要这样做:

代码语言:javascript
复制
listener = New TcpListener(System.Net.IPAddress.Any, Me.Port)

这将允许您在所有网络接口上进行侦听。

此外,如果您希望以IPv6为目标,则可以使用IPv6Any而不是Any。这种选择显然会影响客户端使用的地址。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11745993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档