2015-12-11 2 views
-2

У меня есть следующий код для прослушивания соединений TCP/IP на локальном хосте на моем компьютере. Когда я запускаю приложение (приложение WPF), я получаю следующие сообщения об ошибках.C# TCPListener Issue

Любая помощь приветствуется.

спасибо.

Обновленный код:

try 
{ 
    string sConnectionString = "Data Source=xxxx;Initial Catalog=xxxx;Integrated Security=false;User ID=xxxx;Password=xxxx"; 

    IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); 
    Console.WriteLine("Starting TCP listener..."); 

    TcpListener listener = new TcpListener(ipAddress, 13002); 

    listener.Start(); 

    while (true) 
    { 
     Console.WriteLine("Server is listening on " + listener.LocalEndpoint); 

     Socket client = listener.AcceptSocket(); 

     var childSocketThread = new Thread(() => 
     { 
      byte[] data = new byte[100]; 
      int size = client.Receive(data); 

      string incomingMess = " "; 

      for (int i = 0; i < size; i++) 
       incomingMess = incomingMess + Convert.ToChar(data[i]); 

      Console.WriteLine("---> Message recorded in DB"); 
      Console.WriteLine(System.Environment.NewLine); 

      SqlConnection con = new SqlConnection(sConnectionString); 

      string regMess = "insert into Messages(incomingMessage) values(@incomingMessage_param)"; 
      SqlCommand regMessCommand = new SqlCommand(regMess, con); 

      con.Open(); 
      regMessCommand.Parameters.AddWithValue("@incomingMessage_param", incomingMess); 
      regMessCommand.ExecuteNonQuery(); 
      con.Close(); 

      client.Close(); 
     }); 
     childSocketThread.Start(); 
    } 

    listener.Stop(); 
} 
catch (Exception e) 
{ 
    Console.WriteLine("Error: " + e.StackTrace); 
    Console.ReadLine(); 
} 
+3

Каковы сообщения об ошибках? - вы показываете нам только StackTrace. – Russ

+1

Увидев стек, исходящий из 'System.Net.Sockets.Socket.Bind (EndPoint localEP)', возможно, ему не удалось привязать к порту 13000, потому что что-то еще прослушивает его? –

+0

Да - какова ошибка? Тем не менее, не помещайте этот код в конструктор, используйте Window.Loaded или задержку таймера. – JeffRSon

ответ

0

Я бы ожидать, что ваша программа ранее была связана с этим портом и порт не был выпущен, когда вы завершили процесс от его контура - если вы измените порт число до 13001/13002/13003/что-то еще случайное, вы находите, что все еще получаете исключение?

+0

Один шаг назад: мы хотели бы создать приложение, которое будет получать сообщения от внешних устройств 24/7. В этом случае IP-адрес будет IP-адресом сервера, но мне интересно, как выбрать номер порта? До сих пор я переместил код в Form_Load (теперь я использую Forms вместо WPF) и изменил порт на 13001. Тем не менее, я все еще получаю ту же информацию StackTrace (если я ее не отслеживаю, я не получаю никаких сообщений об ошибках но я вижу, что весь код не выполняется). – Guven

+0

Хорошо, не могли бы вы обновить главный вопрос с помощью своего нового кода, пожалуйста? Кроме того, если бы вы могли описать данные, которые вы хотите получать с этих устройств, это также потенциально повлияет на решение. – Moby

+0

Код работал без каких-либо проблем в консольном приложении. Я обновил код выше. – Guven

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