2016-09-06 62 views
-1

我想連接Android上的統一應用程序與計算機應用程序。我可以在網絡上運行它,但通過互聯網它總是說機器拒絕連接。我已經停用Windows和防病毒的防火牆,但仍然有連接的服務器和Android客戶端問題:通過TCP/IP連接'連接被拒絕'

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); 
    } 
} 
+0

服務器上是否有可能拒絕連接的防火牆?你能在客戶端上使用telnet連接嗎?或者另一個任意機器?我會首先檢查服務器是否可訪問,然後繼續調試客戶機 - 服務器連接。 –

+0

服務器是否實際託管在設置爲主機服務器的網絡上? –

+0

您的服務器端異常處理是不可接受的基礎。 – EJP

回答

1

的MAC hine拒絕連接

此錯誤具有一個含義:在您嘗試連接的IP:端口上沒有任何內容正在監聽。所以,要麼是錯誤的,要麼是客戶端嘗試連接時服務器未啓動。

圖像文件與它完全無關。