2015-12-11 48 views
-2

我有以下代碼來偵聽我的計算機上本地主機上的TCP/IP連接。當我運行應用程序(WPF應用程序)時,我收到以下錯誤消息。C#TCPListener問題

任何幫助表示讚賞。

謝謝。

更新的代碼:

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

向後退一步:我們想創建一個應用程序,它將全天候接收來自外部設備的消息。在這種情況下,IP地址將是服務器的IP地址,但我想知道應如何選擇端口號?直到現在,我已經將代碼移到了Form_Load(現在我使用Forms而不是WPF)並將端口更改爲13001.但是,我仍然收到相同的StackTrace信息(如果我沒有跟蹤它,我不會收到任何錯誤消息但我看到整個代碼沒有執行)。 – Guven

+0

好的,你能用新代碼更新主要問題嗎?此外,如果您可以描述您希望從這些設備獲得的數據類型,那麼這也可能會影響解決方案。 – Moby

+0

代碼在控制檯應用程序中沒有任何問題。我更新了上面的代碼。 – Guven