【问题标题】:'Connection refused' connecting through TCP/IP'连接被拒绝' 通过 TCP/IP 连接
【发布时间】:2017-01-13 15:54:02
【问题描述】:

我想将 Android 上的 unity 应用程序与计算机应用程序连接起来。我可以在网络上运行它,但在互联网上它总是说机器拒绝连接。我已经关闭了windows的防火墙和杀毒,但是连接服务器和安卓客户端还是有问题:

No connection could be made because the target machine actively refused it.

代码如下:

服务器端:

TcpListener tcpListener;
Socket socket;
NetworkStream networkStream;
Thread thread;

string getIpAddress()
{
    System.Net.IPHostEntry host;
    string localIp = "";
    host = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
    foreach (System.Net.IPAddress ip in host.AddressList)
    {
        localIp = ip.ToString();
    }
    return localIp;
}

public void ReceiveImage()
{
    try
    {
        IPAddress localAddr = IPAddress.Parse("95.171.54.53");
        tcpListener = new TcpListener(localAddr, 53100);
        tcpListener.Start();
        socket = tcpListener.AcceptSocket();
        networkStream = new NetworkStream(socket);
        pictureBox1.Image = Image.FromStream(networkStream);
        if (socket.Connected == true)
        {
            while (true)
            {
                tcpListener.Stop();
                ReceiveImage();
            }
        }
    }
    catch(Exception ex)
    {
        string Message = ex.Message;
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    thread = new Thread(new ThreadStart(ReceiveImage));
    thread.Start();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    tcpListener.Stop();
    thread.Abort();
}

这是客户端:

// Update is called once per frame
int frameSaveCount = -1;
int FrameCount = -1;
Socket socket;
NetworkStream networkStream;
Thread thread;
MemoryStream memoryStream;
TcpClient tcpClient;
BinaryWriter binaryWriter;

void Update()
{
    // ...
    if(FrameCount % 10==0)
    {
        // ...
        send(bytes);
    }
}

void send(Byte[] bytes)
{
    try
    {
        print(getIpAddress());
        tcpClient = new TcpClient("95.171.54.53", 53100);
        networkStream = tcpClient.GetStream();
        binaryWriter = new BinaryWriter(networkStream);
        binaryWriter.Write(bytes);
        binaryWriter.Close();
        networkStream.Close();
        tcpClient.Close();
    }
    catch (Exception exception)
    {
        string message = exception.Message;
        print(message);
    }
}

【问题讨论】:

  • 服务器上是否有可能拒绝连接的防火墙?您可以在客户端上使用 telnet 连接吗?还是另一台任意机器?我会先检查服务器是否可达,然后继续调试客户端-服务器连接。
  • 服务器是否实际托管在设置为托管服务器的网络上?
  • 您的服务器端异常处理非常简陋。
  • 如果我是你,我会隐藏你的 ip...
  • 嗨,我已经尝试了很多,直到我发现通过网络连接两台计算机我们应该进行端口转发,但是我根本不知道!

标签: c# tcp network-programming tcpclient tcpserver


【解决方案1】:

机器拒绝连接

这个错误只有一个意思:在你试图连接的 IP:port 上没有任何东西在监听。所以,要么是错误的,要么是当您的客户端尝试连接时您的服务器没有启动。

图像文件与它完全无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2016-08-18
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2023-03-23
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多