C# 如何获得使用TcpClient连接的基本应用程序?
我试图写一个基本的应用程序,将读取数据的端口。这是我的密码:C# 如何获得使用TcpClient连接的基本应用程序?,c#,.net,tcp,port,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.GetStre
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地址
- 我确实有赛门铁克端点保护,但它是由集团策略控制的,我很难关闭它(但如果需要,我可以这样做)
有一个主框架服务器应该向该端口发送TCP数据。我不控制机器/服务器或它发送数据的方法。我只是试图读取发送到端口的数据 更新II:
主框架实际上是将数据发送到我公司的虚拟机。然后,我使用发现的技术将TCP流量重定向到我机器上的同一端口(我希望我可以在那里读取它) 更新III:
大型机是客户端,我需要成为服务器!。一旦我意识到我的工作正常。我会尝试使用另一个端口号,您是否也控制服务器?如果是,请尝试执行以下步骤: 正如您将看到的,您可以通过以下方式收听:
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();
您可以通过以下方式进行连接:
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();
这看起来很简单,但端口号并不是一个细节,因为有些端口不可用或被防火墙阻止等等…您的代码就是“客户端”。您需要在另一台机器上运行一个“服务器”,该机器正在侦听您的传入连接。用于设置“服务器”的代码在哪里(即等待和侦听连接的一方)在端口5600上?什么类型的服务器正在侦听该端口?您可以从其他客户端使用它吗?@Vaccano-您没有发布足够的信息。您需要找出无法连接到服务器应用程序的原因。如果您没有服务器应用程序,则TCP是您想要使用的错误类型的网络连接。@Jon-我用服务器信息更新了我的问题。基本上,这是我公司的一台大型机服务器。该服务器的编程人员告诉我,他将通过该端口上的TCP协议将数据发送到我的机器。我假设我可以连接到该端口并开始读取数据。我可以让服务器使用不同的端口(虽然我不能直接控制它)。我更新了我的问题,以说明服务器是如何设置的。也许我需要编码的是服务器?也许我的主机就像一个客户端,我需要监听它…我会试试你的服务器代码,看看它是否工作。我对服务器和客户端感到困惑(正如我所说,我是TCP通信的新手)。我需要成为服务器,主机作为客户机向我发送数据。一旦我使用了你给我的链接来创建服务器,它就开始工作了。谢谢!