网络 - 通过发送端口
问题描述:
字节数我在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();
}
}
}
正如你所看到的,程序试图连接到使用特定端口号特定网站。
如何修改程序,以便我可以知道数据是否在连接后通过特定端口发送?也许计算发送的字节数或文件的类型?谢谢:)
答
有几种可能性。首先,您可以在套接字上调用Accept
并使程序阻塞,直到数据可用。只要数据可用,您可以将Receive
数据转换为字节数组并在其上工作。
其次,您可以拨打BeginAccept
并异步等待数据到达并相应地处理它。
请参阅C#中套接字上的documentation。
+0
谢谢。我正在阅读文档。 – Matthew 2013-03-27 12:32:39
你想达到什么目的?你想从这个程序发送数据到雅虎,或者你是否有兴趣雅虎是否将数据发送到您的程序? – 2013-03-27 12:32:37
@DavinTryon我想检查一下从我的电脑发送给雅虎的数据量。我想详细说明这个程序,以防止键盘记录器。换句话说,如果数据未经用户同意而发送,则可能存在安装了键盘记录程序或其他恶意软件的可能性。很明显,我还会检查FTP和电子邮件端口,以使其成为可能。 – Matthew 2013-03-27 12:35:12
嗯,你是否担心另一个进程拦截网络流量?也许你应该看看通过TLS确保沟通渠道的安全吗? [这里是一个链接](http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj150597.aspx) – 2013-03-27 12:40:41