Как я могу получить базовое приложение, которое использует TcpClient для подключения? - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь написать базовое приложение, которое будет считывать данные с порта.Вот мой код:

static void Main(string[] args)
{
    int port = 5600;
    string server = "MyDevLaptopName";
    TcpClient tcpClient = new TcpClient();
    tcpClient.Connect(server, port);

    NetworkStream stream = tcpClient.GetStream();
    byte[] data = new byte[256];
    stream.Read(data, 0, data.Length);

    Console.ReadLine();
}

Когда я запускаю приложение выше, я получаю эту ошибку на команду tcpClient.Connect:

Попытка подключения не удалась, потому что подключенная сторона неправильно ответить через некоторое время, или если не удалось установить соединение, так как подключенный хост не смог ответить 10.90.91.19:5600

Я не уверен, почему мой компьютер не отвечает (я совершенно новичок в TCPпорты и тому подобное).

Есть ли другой способ, которым мне нужно настроить это для чтения данных с порта TCP?

Вещи, которые я проверял:

  • Брандмауэр Windows полностью выключен.
  • IP-адрес, указанный в сообщении об ошибке, является внутренним IP-адресом моей машины для разработки (машины, к которой я пытаюсь подключиться).
  • У меня есть Symantec Endpoint Protection, но он контролируется групповой политикой, и мне было бы трудно отключиться (но я могу сделать это, если потребуется).

Обновление:
Есть сервер основного кадрапредполагается, что он отправляет данные TCP на этот порт.Я не контролирую эту машину / сервер или метод, которым он отправляет данные.Я просто пытаюсь прочитать данные, которые отправляются в порт.

Обновление II:
Основной кадр фактически отправляет данные на виртуальную машину в моей компании.Затем я использую метод здесь , чтобы перенаправить этот трафик TCP на тот же порт на моей машине (где я надеялся, что смогу просто прочитать его).

Обновление III:
Мэйнфрейм - это клиент, и мне нужно быть сервером!Однажды я понял, что у меня все работает.

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Я бы попробовал с другим номером порта, вы также управляете сервером?если это так, попробуйте выполнить следующие действия:

C # Tutorial - Простой многопоточный TCP-сервер

, как вы увидите, вы можете прослушать следующим образом:

namespace TCPServerTutorial
{
  class Server
  {
    private TcpListener tcpListener;
    private Thread listenThread;

    public Server()
    {
      this.tcpListener = new TcpListener(IPAddress.Any, 3000);
      this.listenThread = new Thread(new ThreadStart(ListenForClients));
      this.listenThread.Start();
    }
  }
}

и вы можете подключиться следующим образом:

TcpClient client = new TcpClient();

IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3000);

client.Connect(serverEndPoint);

NetworkStream clientStream = client.GetStream();

ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes("Hello Server!");

clientStream.Write(buffer, 0 , buffer.Length);
clientStream.Flush();

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

0 голосов
/ 20 октября 2011

Ваш код "клиент". Вам нужен «сервер», работающий на другом компьютере, который прослушивает ваше входящее соединение.

...