Visual Studio 2013 C#使用/main编译
我是编程新手,我正在尝试为端口扫描器编写代码。当我单击Build(构建)时,我会收到以下错误消息…我意识到这是同一个错误,只是在两个不同的位置,但我想如果同时列出这两个错误,可能会有伤害: 错误1程序“c:\Users\pat_000\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\obj\Debug\WpfApplication2.exe”定义了多个入口点:“PortScanner.Program.Main(string[])”。使用/main编译以指定包含入口点的类型 错误2程序“c:\Users\pat_000\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\obj\Debug\WpfApplication2.exe”定义了多个入口点:“WpfApplication2.App.Main()”。使用/main编译以指定包含入口点的类型 这是我的密码:Visual Studio 2013 C#使用/main编译,c#,visual-studio-2013,C#,Visual Studio 2013,我是编程新手,我正在尝试为端口扫描器编写代码。当我单击Build(构建)时,我会收到以下错误消息…我意识到这是同一个错误,只是在两个不同的位置,但我想如果同时列出这两个错误,可能会有伤害: 错误1程序“c:\Users\pat_000\Documents\Visual Studio 2013\Projects\WpfApplication2\WpfApplication2\obj\Debug\WpfApplication2.exe”定义了多个入口点:“PortScanner.Program.Ma
enter code here
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace PortScanner
{
class Program
{
static bool stop = false;
static int startPort;
static int endPort;
static List<int> openPorts = new List<int>();
static object consoleLock = new object();
static int waitingForResponses;
static int maxQueriesAtOneTime = 100;
static void Main(string[] args)
{
begin:
Console.WriteLine("Enter the IP Address of the target:");
string ip = Console.ReadLine();
IPAddress ipAddress;
if (!IPAddress.TryParse(ip, out ipAddress))
goto begin;
startP:
Console.WriteLine("Enter the starting port to start scanning on:");
string sp = Console.ReadLine();
if (!int.TryParse(sp, out startPort))
goto startP;
endP:
Console.WriteLine("Enter the end port:");
string ep = Console.ReadLine();
if (!int.TryParse(ep, out endPort))
goto endP;
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("Press any key to stop scanning...");
Console.WriteLine("");
Console.WriteLine("");
ThreadPool.QueueUserWorkItem(StartScan, ipAddress);
Console.ReadKey();
stop = true;
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static void StartScan(object o)
{
IPAddress ipAddress = o as IPAddress;
for (int i = startPort; i < endPort; i++)
{
lock (consoleLock)
{
int top = Console.CursorTop;
Console.CursorTop = 7;
Console.WriteLine("Scanning port: {0} ", i);
Console.CursorTop = top;
}
while (waitingForResponses >= maxQueriesAtOneTime)
Thread.Sleep(0);
if (stop)
break;
try
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.BeginConnect(new IPEndPoint(ipAddress, i), EndConnect, s);
Interlocked.Increment(ref waitingForResponses);
}
catch (Exception)
{
}
}
}
static void EndConnect(IAsyncResult ar)
{
try
{
DecrementResponses();
Socket s = ar.AsyncState as Socket;
s.EndConnect(ar);
if (s.Connected)
{
int openPort = Convert.ToInt32(s.RemoteEndPoint.ToString().Split(':')[1]);
openPorts.Add(openPort);
lock (consoleLock)
{
Console.WriteLine("Connected TCP on port: {0}", openPort);
}
s.Disconnect(true);
}
}
catch (Exception)
{
}
}
static void IncrementResponses()
{
Interlocked.Increment(ref waitingForResponses);
PrintWaitingForResponses();
}
static void DecrementResponses()
{
Interlocked.Decrement(ref waitingForResponses);
PrintWaitingForResponses();
}
static void PrintWaitingForResponses()
{
lock (consoleLock)
{
int top = Console.CursorTop;
Console.CursorTop = 8;
Console.WriteLine("Waiting for responses from {0} sockets ", waitingForResponses);
Console.CursorTop = top;
}
}
}
}
namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
在此处输入代码
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
使用系统线程;
使用System.Net.Sockets;
Net系统;
命名空间端口扫描程序
{
班级计划
{
静态布尔停止=假;
静态int起始端口;
静态内部端口;
静态列表openPorts=新列表();
静态对象控制台锁定=新对象();
静态int等待响应;
静态int maxQueriesAtOneTime=100;
静态void Main(字符串[]参数)
{
开始:
Console.WriteLine(“输入目标的IP地址:”);
字符串ip=Console.ReadLine();
IPAddress-IPAddress;
if(!IPAddress.TryParse(ip,out-IPAddress))
去开始;
startP:
Console.WriteLine(“输入开始扫描的起始端口:”);
字符串sp=Console.ReadLine();
如果(!int.TryParse(sp,out startPort))
后藤星;
(完)
Console.WriteLine(“输入结束端口:”);
字符串ep=Console.ReadLine();
如果(!int.TryParse(ep,输出端端口))
goto endP;
控制台。写线(“”);
控制台。写线(“”);
控制台。写线(“”);
控制台。写线(“”);
Console.WriteLine(“按任意键停止扫描…”);
控制台。写线(“”);
控制台。写线(“”);
QueueUserWorkItem(StartScan,ipAddress);
Console.ReadKey();
停止=真;
Console.WriteLine(“按任意键退出…”);
Console.ReadKey();
}
静态无效开始扫描(对象o)
{
IPAddress IPAddress=o作为IPAddress;
对于(int i=startPort;i=maxQueriesAtOneTime)
睡眠(0);
如果(停止)
打破
尝试
{
Socket s=新套接字(AddressFamily.InterNetwork、SocketType.Stream、ProtocolType.Tcp);
s、 BeginConnect(新的IPEndPoint(ipAddress,i),EndConnect,s);
联锁。增量(参考等待响应);
}
捕获(例外)
{
}
}
}
静态无效端点连接(IAsyncResult ar)
{
尝试
{
递减响应();
套接字s=ar.AsyncState作为套接字;
s、 端接(ar);
如果(已连接)
{
int openPort=Convert.ToInt32(s.RemoteEndPoint.ToString().Split(“:”)[1]);
添加(openPort);
锁(控制台锁)
{
WriteLine(“端口上连接的TCP:{0}”,openPort);
}
s、 断开连接(正确);
}
}
捕获(例外)
{
}
}
静态void IncrementResponses()
{
联锁。增量(参考等待响应);
PrintWaitingForResponses();
}
静态空隙递减响应()
{
联锁。减量(参考等待响应);
PrintWaitingForResponses();
}
静态void printing waitingforresponses()
{
锁(控制台锁)
{
int top=Console.CursorTop;
Console.CursorTop=8;
WriteLine(“等待来自{0}套接字的响应”,waitingForResponses);
Console.CursorTop=顶部;
}
}
}
}
命名空间WpfApplication2
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
}
}
您显然想编写一个控制台应用程序。你选择了WPF应用程序。复制整个代码,基于ConsoleApplication创建新项目,并将代码粘贴到其中
并试着摆脱gotos;这不是基本的。您可以轻松地为所有三种用途创建一个函数。尝试查看其他解决方案文件,看看是否在其他地方定义了另一个Main(),这会让编译器感到困惑。