2013-03-27 164 views
2

字節數我在C#下面的代碼:網絡 - 通過發送端口

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 

namespace Networking 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("---Connecting to a Host using a Specific Port---"); 
      Console.WriteLine(); 
      Console.WriteLine("Attempting Connection..."); 
      Console.WriteLine(); 

      string hostname = "www.yahoo.com"; 
      int port_no = 21; //HTTP = 80, HTTPS = 443, FTP = 21 

      IPAddress ipa = (IPAddress)Dns.GetHostAddresses(hostname)[0]; 

      try 
      { 
       Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
       socket.Connect(ipa, port_no); 

       if (socket.Connected == true) 
       { 
        Console.WriteLine("The connection was successful!"); 
       } 
      } 
      catch (System.Net.Sockets.SocketException ex) 
      { 
       if (ex.ErrorCode == 10061) 
       { 
        Console.WriteLine("The connection was NOT successful!"); 
       } 
       else 
       { 
        Console.WriteLine(ex.Message); 
       } 
      } 
      Console.WriteLine(); 
      Console.WriteLine("Press enter to exit"); 
      Console.ReadLine(); 
     } 
    } 
} 

正如你所看到的,程序試圖連接到使用特定端口號特定網站。

如何修改程序,以便我可以知道數據是否在連接後通過特定端口發送?也許計算髮送的字節數或文件的類型?謝謝:)

+1

你想達到什麼目的?你想從這個程序發送數據到雅虎,或者你是否有興趣雅虎是否將數據發送到您的程序? – 2013-03-27 12:32:37

+0

@DavinTryon我想檢查一下從我的電腦發送給雅虎的數據量。我想詳細說明這個程序,以防止鍵盤記錄器。換句話說,如果數據未經用戶同意而發送,則可能存在安裝了鍵盤記錄程序或其他惡意軟件的可能性。很明顯,我還會檢查FTP和電子郵件端口,以使其成爲可能。 – Matthew 2013-03-27 12:35:12

+1

嗯,你是否擔心另一個進程攔截網絡流量?也許你應該看看通過TLS確保溝通渠道的安全嗎? [這裏是一個鏈接](http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj150597.aspx) – 2013-03-27 12:40:41

回答

1

有幾種可能性。首先,您可以在套接字上調用Accept並使程序阻塞,直到數據可用。只要數據可用,您可以將Receive數據轉換爲字節數組並在其上工作。

其次,您可以撥打BeginAccept並異步等待數據到達並相應地處理它。

請參閱C#中套接字上的documentation

+0

謝謝。我正在閱讀文檔。 – Matthew 2013-03-27 12:32:39