Клиент C # TCP / IP, имеющий исключение ввода-вывода - PullRequest
0 голосов
/ 27 ноября 2009

Исключение ввода-вывода: «Невозможно прочитать данные из транспортного соединения: установленное соединение было прервано программным обеспечением на вашем хост-компьютере».

Код был скопирован из учебника, и я уверен, что эта ошибка связана с моей собственной машиной. Все мои брандмауэры, ESET и Windows, отключены. Клиенты подключаются через порт 55555.

редактирование:

Клиент

    static void Main(string[] args)
    {
        MakeClientCallToServer("test");
        MakeClientCallToServer("test2");
        MakeClientCallToServer("test3");

        // Now send a bunch of messages...
        string msg;
        for (int i = 0; i < 100; i++)
        {
            msg = string.Format(Thread.CurrentThread.CurrentCulture,
            "I'll not be ignored! (round {0})", i);
            ThreadPool.QueueUserWorkItem(new
            WaitCallback(MakeClientCallToServer), msg);
        }
        Console.WriteLine("\n Press any key to continue... ");
        Console.Read();
    }
    static void MakeClientCallToServer(object objMsg)
    {
        string msg = (string)objMsg;
        MyTcpClient client = new MyTcpClient(IPAddress.Loopback, 55555);
        client.ConnectToServer(msg);
    }

Сервер

    static MyTcpServer server;

    static void Main(string[] args)
    {
        ThreadPool.QueueUserWorkItem(RunServer);
        Console.WriteLine("Press esc to stop the server...");
        ConsoleKeyInfo cki;
        while (true)
        {
            cki = Console.ReadKey();
            if (cki.Key == ConsoleKey.Escape)
            {
                break;
            }
        }
    }

    static void RunServer(object stateInfo)
    {
        //Initiate the server)
        server = new MyTcpServer(IPAddress.Loopback, 55555);
        server.Listen();
    }

Я уже создал классы с именами MyTcpServer и MyTcpClient для обработки всех общих соединений, потоков и т. Д.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2009

Есть ли возможность увидеть какой-нибудь код?

Вы правы, что наиболее распространенной причиной этой ошибки является блокировка на вашей машине, поэтому отключение всего этого - отличный первый шаг.Хотя это все еще происходит, можете ли вы загрузить Wireshark , чтобы посмотреть, что происходит с вашими пакетами?

0 голосов
/ 27 ноября 2009

вы можете попробовать использовать Wireshark для захвата потока данных, чтобы увидеть, что произошло.

...