如何获得使用TcpClient连接的基本应用程序?

时间:2011-10-20 14:21:56

标签: c# .net tcp port

我正在尝试编写一个从端口读取数据的基本应用程序。这是我的代码:

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:
主框架实际上是将数据发送到我公司的VM。然后我使用找到here的技术将TCP流量重定向到我机器上的同一个端口(我希望我可以把它读掉)。

更新III:
大型机是客户端,我需要成为服务器!一旦我意识到我的工作正常。

2 个答案:

答案 0 :(得分:2)

我会尝试使用其他端口号,您是否也控制了服务器?如果是这样,请尝试按照以下步骤操作:

C# Tutorial - Simple Threaded TCP Server

你会看到那里你可以这样听:

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();

它似乎微不足道,但它是,但端口号不是一个细节,因为一些端口不可用或阻止防火墙等...

答案 1 :(得分:0)

您的代码是“客户端”。您需要在另一台正在侦听传入连接的计算机上运行“服务器”。