当我尝试创建新的TcpClient
时,我收到SocketException
,这是我的代码:
public void TcpOpenConnection()
{
// The next line is where the exception is occurring.
tcpClient = new TcpClient(ipAddress, port);
connected = true;
}
我已经检查过确保端口在cmd中打开netstat -a
,我甚至做了另一个函数来检查端口是否打开:
public static bool PortCheck(int port)
{
bool portOpen = false;
IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
TcpConnectionInformation[] tcpConnInfo = ipGlobalProperties.GetActiveTcpConnections();
foreach (var tcpConn in tcpConnInfo)
{
if (tcpConn.LocalEndPoint.Port == port)
{
portOpen = true;
break;
}
}
return portOpen;
}
返回true。我得到的例外是SocketException
,它说我正在尝试连接的机器正在主动拒绝连接。这可能是什么问题?我也试过其他端口,没有运气。
如果您需要更多信息,请询问,我很乐意提供更多信息。
答案 0 :(得分:1)
我得到的例外是
SocketException
,它说我尝试连接的机器正在主动拒绝连接。
这可能表明目标主机没有收听端口,这可能是由多种原因引起的:
列表继续......但实际上,此错误意味着服务器不允许连接。
答案 1 :(得分:0)
如果端口已打开且您尝试连接。你得到SocketException,因为没有任何东西可以获得客户端连接。
所以你需要在这个端口上托管一个Tcplistner。
reffunc()
你可以连接到。
static void StartServer()
{
int port = 150;
TcpListener listner = new TcpListener(IPAddress.Any, port);
listner.Start();
// This line waits the client connection.
TcpClient remote_client = listner.AcceptTcpClient();
// do something with remote_client.
}