我在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。
关于c# - 网络-通过端口发送的字节数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15658769/