2010-02-11 55 views
0

我想获得一个小小的客户端/服务器的事情,只是为了学习如何做到这一点......但使用了许多样本后,即使在MSDN上的几个教程,他们都没有工作过。TCP的东西从来没有为我工作

我不断收到以下异常:

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

你还没有显示8000端口正在监听... – 2010-02-11 06:26:53

+0

@Jon:我猜他不知道什么应该(没有冒犯) – falstro 2010-02-11 06:31:57

+0

@Tommy:也许你应该读一些关于TCP(例如:http: //en.wikipedia.org/wiki/Transmission_Control_Protocol)了解TCP/IP基础知识。 – 2010-02-11 07:32:30

回答

0

基本上,错误消息说,在目标机器与RST(复位应答的SYN(连接请求数据包)(你试图连接一个),即没有连接成为可能在这种情况下)。它的意思是,没有服务器进程在另一端监听。

客户端 - 服务器软件分为两部分,客户端连接到第二部分服务器。服务器进程需要监听TCP端口以接受连接,并且客户端必须连接到服务器的IP地址以及它正在监听的端口。

1

在尝试连接客户端之前,您是否启动了服务器?

此外,请确保您使用的端口(8000)未被防火墙阻挡或被其他进程占用。

0

那么,如果你所要做的只是测试创建套接字连接,请使用“google.com”作为主机名,使用80作为您的端口。这是保证总是在倾听。如果不是,那么,那可能意味着世界已经停止。

0

我想通了它为什么不起作用。最近我安装了一个小程序(我不知道该如何安装)以及我选择安装的程序,并且该程序使用了多个端口。我已经设法摆脱那个应用程序,并且一切正常工作:)

谢谢大家的帮助和建议!