단순한 IP 마스크 계산기 일뿐입니다. 프로그램을 실행하면 브로드 캐스트 및 네트워크 주소를 표시하지만 창이 실행될 때 즉시 창이 닫힙니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?프로그램을 실행할 때 콘솔 창이 즉시 닫힙니다.
namespace ConsoleApplication5
{
public static class Project3
{
static void Main(string[] args)
{
Console.WriteLine("Hello");
var ip1 = IPAddress.Parse("192.168.0.1");
var ip2 = IPAddress.Parse("192.168.1.40");
var mask = IPAddress.Parse("255.255.255.0");
bool inSameNet = ip1.IsInSameSubnet(ip2, mask);
IPAddress broadcast = GetBroadcastAddress(ip2, mask);
IPAddress net = GetNetworkAddress(ip2, mask);
Console.WriteLine(broadcast);
Console.WriteLine(net);
}
public static IPAddress GetBroadcastAddress(this IPAddress address, IPAddress subnetMask)
{
byte[] addressBytes = address.GetAddressBytes();
byte[] subnetMaskBytes = subnetMask.GetAddressBytes();
if (addressBytes.Length != subnetMaskBytes.Length)
throw new ArgumentException("No Match.");
byte[] broadcastAddress = new byte[addressBytes.Length];
for (int i = 0; i < broadcastAddress.Length; i++)
{
broadcastAddress[i] = (byte)(addressBytes[i] | (subnetMaskBytes[i]^255));
}
return new IPAddress(broadcastAddress);
}
public static IPAddress GetNetworkAddress(this IPAddress address, IPAddress subnetMask)
{
byte[] netAddressBytes = address.GetAddressBytes();
byte[] subnetMaskBytes = subnetMask.GetAddressBytes();
if (netAddressBytes.Length != subnetMaskBytes.Length)
throw new ArgumentException("No match.");
byte[] broadcastAddress = new byte[netAddressBytes.Length];
for (int i = 0; i < broadcastAddress.Length; i++)
{
broadcastAddress[i] = (byte)(netAddressBytes[i] & (subnetMaskBytes[i]));
}
return new IPAddress(broadcastAddress);
}
public static bool IsInSameSubnet(this IPAddress address2, IPAddress address, IPAddress subnetMask)
{
IPAddress network1 = address.GetNetworkAddress(subnetMask);
IPAddress network2 = address2.GetNetworkAddress(subnetMask);
return network1.Equals(network2);
}
}
}
이 정상적인 동작을 추가하려고'Console.Read()'이 선 후'Console.WriteLine (순),' – MethodMan
을 눌러'Ctrl' +'F5' 또는'Console.ReadLine를 추가()' 'Main' 메소드의 마지막 줄로. – dotctor
마스크가 계산되면 프로세스가 종료되기 때문입니다. 'Console.WriteLine (net); 뒤에'Console.Readline();'을 추가하면된다. – Benj