2015-03-16 2 views
0

Я написал простой сервер Tcp в C#: (я заменил некоторые части кода в «сделайте некоторые вещи», когда это не имеет ничего общего с server теперь, когда я пытаюсь связаться с сервером с клиента python или с клиентом android, я получаю такие ошибки, как: «другая сторона активно отказалась от соединения». Что я должен делать? проблема в моем C# код, или я, вероятно, не контактирование правильно? спасибо.не может получить данные с сервера C# tcp

public bool ListenLoop(Int32 port, IPAddress localAddr) 
     { 
      try 
      { 
       server = new TcpListener(localAddr, port); 

       // Start listening for client requests. 
       server.Start(); 
       // Buffer for reading data 
       Byte[] bytes = new Byte[256]; 
       String data = null; 

       // Enter the listening loop. 
       while(true) 
       { 
       //Waiting for a connection 

       // Perform a blocking call to accept requests. 
       TcpClient client = server.AcceptTcpClient();    
       //connected! 


       // Get a stream object for reading and writing 
       NetworkStream stream = client.GetStream(); 
       int i; 

       // Loop to receive all the data sent by the client. 
       while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
       { 
        // Translate data bytes to a ASCII string. 
        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); 
        //handling opCodes 
        if(data[0] == '0') //log in 
        { 
         //do some stuff 
         byte[] msg = System.Text.Encoding.ASCII.GetBytes(response); 
         // Send back a response. 
         stream.Write(msg, 0, msg.Length); 
         //sent  
        } 
        else if (data[0] == '1') //download tune names 
        { 
         //do some stuff 
         byte[] msg = System.Text.Encoding.ASCII.GetBytes(response); //response is the names 
         // Send back a response. 
         stream.Write(msg, 0, msg.Length); 
         //sent 
        } 
        else if (data[0] == '2') //changing choice 
        { 
         //do some stuff 
         byte[] msg = System.Text.Encoding.ASCII.GetBytes(response); 
         // Send back a response. 
         stream.Write(msg, 0, msg.Length); 
         //sent 

        } 

       } 

       // Shutdown and end connection 
       client.Close(); 
       } 
      } 
      catch(SocketException) 
      { 
       return false; 
      } 

      finally 
      { 
       // Stop listening for new clients. 
       server.Stop();  
      } 
     } 
+0

Это проблема с соединением. Проверьте, запущен сервер и проверьте свой брандмауэр, чтобы убедиться, что соответствующий порт открыт. Также проверьте, что вы пытаетесь подключиться к правильному ip/port, поскольку на том же компьютере может быть что-то еще, которое не понимает ваш входящий запрос. – Squonk

+0

Если вы слушаете адрес 'localhost', тогда соединения с другими хостами будут отклонены. вы подключаете ** из ** той же машины? – Skaperen

+0

Привет, я действительно соединяюсь с той же машиной. Странно, что я скопировал свой код в консольное приложение, и сервер работал отлично, но когда я запускаю его в приложении wpf, он отказывается от соединений – gilgemer

ответ

0

вы уверены, что нет брандмауэра, который блокирует входящие соединения (как TCP)?

Также, если ваш сервер находится в тестировании, вы должны написать какой-либо вывод либо в файл журнала, либо даже для консоли. По крайней мере, вы знаете, что происходит.

0

server = new TcpListener (localAddr, порт); изменить на server = new TcpListener (порт);

+0

. Объясните свой ответ. –

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