2016-09-06 5 views
-1

Я хочу подключить приложение единства к андроиду с помощью компьютерного приложения. Я могу запустить его в сети, но через Интернет он всегда говорит, что машина отказывается от соединения. Я отключил брандмауэр окон и анти-вируса, но все еще есть проблемы с подключением к серверу и 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

макинтош hine отказывается от соединения

Эта ошибка имеет ровно одно значение: ничто не слушает на IP-порту, к которому вы пытались подключиться. Таким образом, это было неправильно или ваш сервер не запускался, когда ваш клиент пытался подключиться.

Файлы изображений не имеют никакого отношения к этому.

Смежные вопросы