У меня никогда не работает TCP - PullRequest
0 голосов
/ 11 февраля 2010

Я пытаюсь заставить небольшую клиент-серверную штуку просто учиться тому, как это делать ... Но после использования многих примеров, даже после нескольких уроков по 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());
    }
}

Может кто-нибудь помочь мне понять, почему это не сработает ??

Спасибо:)

Ответы [ 4 ]

1 голос
/ 11 февраля 2010

Запустили ли вы сервер, прежде чем пытаться соединиться с клиентом?

Также убедитесь, что используемый вами порт (8000) не заблокирован брандмауэром и не занят другим процессом.

0 голосов
/ 11 февраля 2010

Я понял, почему это не работает. Недавно было установлено небольшое приложение (о котором я понятия не имел) и программа, которую я выбрал для установки, и это приложение использовало несколько портов. Мне удалось избавиться от этого приложения, и все работает просто отлично:)

Спасибо всем за помощь и предложения!

0 голосов
/ 11 февраля 2010

Что ж, если все, что вы пытаетесь сделать, это проверить создание соединения через сокет, используйте «google.com» в качестве имени хоста и 80 в качестве порта. Это гарантированно всегда будет слушать. А если это не так, то, наверное, это означало бы, что мир остановился.

0 голосов
/ 11 февраля 2010

Как правило, в сообщении об ошибке говорится, что целевой компьютер (тот, к которому вы пытаетесь подключиться) ответил на SYN (пакет запроса подключения) с помощью RST (сброс, т. Е. В этом случае подключение невозможно). Это означает, что серверный процесс не прослушивается на другом конце.

Клиент-серверное программное обеспечение состоит из двух частей, клиент, который подключается ко второй части, сервер. Серверный процесс должен прослушивать tcp-порт, чтобы принимать соединения, и клиент должен подключаться к IP-адресу сервера, а также к порту, который он прослушивает.

...