2012-12-14 53 views
0

我正在嘗試在使用C#的網絡中與遠程系統建立連接。然後程序拋出以下異常使用TCP客戶端進行連接時出錯

無連接可以作出,因爲目標機器積極地拒絕它192.168.1.42:8000

private void Start_Sending_Video_Conference(string remote_IP,int port_number) 
{ 
    try 
    { 
     ms = new MemoryStream();// Store it in Binary Array as 
     pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 
     byte[] arrImage = ms.GetBuffer(); 
     myclient = new TcpClient (remote_IP,port_number);//Connecting with server 
     myns = myclient.GetStream(); 
     mysw = new BinaryWriter (myns); 
     mysw.Write(arrImage);//send the stream to above address 
     ms.Flush(); 
     mysw.Flush(); 
     myns.Flush(); 
     ms.Close(); 
     mysw.Close(); 
     myns.Close(); 
     myclient.Close(); 
    } 
    catch (Exception ex) 
    { 
     Capturing.Enabled = false; 
     MessageBox.Show(ex.Message, "Video Conference Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 
+0

看起來像防火牆 – 0lukasz0

回答

0

確定的東西是在另一端監聽?在這種情況下,看起來您的本地服務器實際上拒絕了該請求。請確認服務器正在運行,TCPServer正在監聽,並且服務器正在運行的計算機(如果它在本地,這應該不是問題)設置爲允許來自LAN的傳入數據包。

1

請檢查秋後算賬:

  1. 是服務器應用程序確實運行
  2. 它是否真的監聽8000端口?
  3. 客戶端計算機上的防火牆是否允許端口8000上的傳出通信?
  4. 服務器計算機上的防火牆是否允許端口8000上的傳入流量?
0

如果上述解決方案不起作用,那麼問題可能出現在Server代碼中。 您可能使用過TcpListener的實例來偵聽指定的端口,但您將哪個IpAddress傳遞給構造函數? 如果你寫了下面的代碼:

mylistener = new TcpListener(IPAddress.Loopback, 8000); 

這將導致錯誤。 發生這種情況是因爲Loopback不會讓偵聽器監聽所有網絡接口,而只監聽來自本地主機(127.0.0.1)的請求。

使用此代碼,而不是

mylistener = new TcpListener(IPAddress.Any, 8000);