我正在尝试获取一些客户端/服务器的东西,只是为了学习如何做...但是在使用了很多样本之后,即使在msdn上也有几个教程,但它们都没有用过。
我一直收到以下异常:
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 220.101.27.107:8000
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at t.MainForm.toolStripButton1344_Click(Object sender, EventArgs e) in C:\Users\Jason\Documents\Visual Studio 2008\Projects\t\t\MainForm.cs:line 1648
我的代码是:
private void toolStripButton1344_Click(object sender, EventArgs e)
{
String strHostName;
string ipaddy;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns.GetHostName();
Console.WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostByName(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
ipaddy = addr[i].ToString();
}
Socket st = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(addr[0], 8000);
try
{
st.Connect(ipe);
}
catch (ArgumentNullException ae)
{
MessageBox.Show("ArgumentNullException : {0}" + ae.ToString());
}
catch (SocketException se)
{
MessageBox.Show("SocketException : {0}" + se.ToString());
}
catch (Exception ex)
{
MessageBox.Show("Unexpected exception : {0}" + ex.ToString());
}
}
有人可以帮我理解为什么这不起作用吗?
谢谢:)
答案 0 :(得分:1)
在尝试连接客户端之前,您是否已启动服务器?
此外,请确保您使用的端口(8000)未被防火墙阻止或被其他进程占用。
答案 1 :(得分:0)
基本上,错误消息显示目标计算机(您尝试连接的计算机)使用RST(重置,即在这种情况下无法连接)应答SYN(连接请求数据包)。这意味着,在另一端没有服务器进程监听。
客户端 - 服务器软件分为两部分,即连接到第二部分的客户端,即服务器。服务器进程需要在tcp端口上侦听以接受连接,并且客户端必须连接到服务器IP地址以及它正在侦听的端口。
答案 2 :(得分:0)
好吧,如果你要做的就是测试创建套接字连接,请使用“google.com”作为主机名,使用80作为端口。这保证总是在听。如果不是,那么,那可能意味着世界已经停止了。
答案 3 :(得分:0)
我弄明白为什么它不起作用。最近安装了一个小应用程序(我不知道)以及我选择安装的程序,该应用程序正在使用多个端口。我已经设法摆脱那个应用程序,一切正常工作:)
谢谢大家的帮助和建议!