客户端-服务器程序:客户端可以很容易地连接到服务器,但由于目标机主动拒绝连接,服务器无法响应
本文关键字:服务器 连接 客户端 目标机 响应 拒绝 程序 很容易 | 更新日期: 2023-09-27 18:16:34
我第一次尝试编写客户机-服务器程序。它在局域网网络上工作得很好,但我不能在互联网上工作。
我可以很容易地发送数据到服务器程序与以下代码:
public static bool sendTo(IPEndPoint ip, String data)
{
using (TcpClient c = new TcpClient())
{
try
{
c.Connect(ip);
NetworkStream clientStream = c.GetStream();
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes(data);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
c.Close();
}
catch
{
c.Close();
return false;
}
}
return true;
}
然后服务器必须使用相同的代码响应客户端,但它失败了,给出以下错误:
无法连接,因为目标机器主动拒绝它IP:*PORT*
我知道这个问题可以通过端口转发和改变路由器的设置来解决。但我可能很快就会尝试做一个软件,用户应该能够用最少的配置来使用这个软件。所以…我想知道是否有人可以帮助我在这里…
提前感谢,避署
您需要设计您的客户机和服务器,使客户机到服务器的连接保持打开状态以接收响应,然后执行如下操作:
public static bool sendTo(IPEndPoint ip, String data)
{
TcpClient client = null;
NetworkStream stream = null;
StreamWriter writer = null;
StreamReader reader = null;
try
{
client = new TcpClient();
client.Connect(ip);
stream = c.GetStream();
writer = new StreamWriter(stream);
writer.WriteLine(data);
writer.Flush();
reader = new StreamReader(stream);
string response = reader.ReadLine();
if (response == "roger-alpha-tango")
{
return true;
}
}
catch
{
return false;
}
finally
{
if (writer != null) writer .Dispose();
if (reader != null) reader .Dispose();
if (stream != null) stream.Dispose();
if (client != null) { client.Close(); client.Dispose(); }
}
return false;
}