Est-il possible d'obtenir l'adresse MAC du client distant via TCPListener en C#?Obtenir l'adresse MAC via TCPListener en C#
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
namespace TCPserver
{
class Program
{
private const int BUFSIZE = 32;
static void Main(string[] args)
{
if (args.Length > 1) // Test for correct of args
throw new ArgumentException("Parameters: [<Port>]");
int servPort = (args.Length == 1) ? Int32.Parse(args[0]) : 7;
TcpListener listener = null;
try
{
// Create a TCPListener to accept client connections
listener = new TcpListener(IPAddress.Any, servPort);
listener.Start();
}
catch (SocketException se)
{
Console.WriteLine(se.Message);
Environment.Exit(se.ErrorCode);
}
byte[] rcvBuffer = new byte[BUFSIZE]; // Receive buffer
int bytesRcvd; // Received byte count
for (; ;)
{ // Run forever, accepting and servicing connections
TcpClient client = null;
NetworkStream ns = null;
try
{
client = listener.AcceptTcpClient(); // Get client connection
ns = client.GetStream();
Console.Write("Handling client - ");
// Receive until client closes connection
int totalBytesEchoed = 0;
while ((bytesRcvd = ns.Read(rcvBuffer, 0, rcvBuffer.Length)) > 0)
{
ns.Write(rcvBuffer, 0, bytesRcvd);
totalBytesEchoed += bytesRcvd;
}
Console.WriteLine("echoed {0} bytes.", totalBytesEchoed);
ns.Close();
client.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
ns.Close();
}
}
}
}
}
avez-vous regardé à la bibliothèque d'aide ip https://msdn.microsoft.com/en-us/library/windows/desktop/aa366071 (v = vs.85) .aspx – pm100
Je ne pense pas que ce que vous voulez est possible basé sur le fait qu'une adresse MAC est une adresse de couche 2 (matériel) et ne sera pas accessible en dehors du LAN du périphérique distant. Sur un réseau local, vous pouvez faire un ARP pour obtenir une adresse MAC à partir d'une adresse IP. –
MAC est utilisé dans la couche de liaison de données, pas la couche réseau, donc j'en doute sérieusement. – Amy