易截截图软件、单文件、免安装、纯绿色、仅160KB

C#扫描计算机端口

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace PortScanner
{
class Program
{
 //已扫描端口数目
 internal static int scannedCount = 0;
 //正在运行的线程数目
 internal static int runningThreadCount = 0;
 //打开的端口数目
 internal static List<int> openedPorts = new List<int>();
 //起始扫描端口
 static int startPort = 1;
 //结束端口号
 static int endPort = 500;
 //最大工作线程数
 static int maxThread = 10;
 static void Main(string[] args)
 {
  //接收传入参数一作为要扫描的主机
  string host = "192.168.0.1";
  //接收传入参数二作为端口扫描范围,如1-4000
  string portRange = "1-400";
  startPort = int.Parse(portRange.Split('-')[0].Trim());
  endPort = int.Parse(portRange.Split('-')[1].Trim());
  for (int port = startPort; port < endPort; port++)
  {
   //创建扫描类
   Scanner scanner = new Scanner(host, port);
   Thread thread = new Thread(new ThreadStart(scanner.Scan));
   thread.Name = port.ToString();
    thread.IsBackground = true;
   //启动扫描线程
   thread.Start();
   runningThreadCount++;
   Thread.Sleep(10);
   //循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术
   while (runningThreadCount >= maxThread) ;
  }
  //空循环,直到所有端口扫描完毕
  while (scannedCount + 1 < (endPort - startPort)) ;
   Console.WriteLine();
   Console.WriteLine();
   //输出结果
   Console.WriteLine("Scan for host: {0} has been completed , \n total {1} ports scanned, \nopened ports :{2}",
host, (endPort - startPort), openedPorts.Count);
  foreach (int port in openedPorts)
   Console.WriteLine("\tPort: {0} is open", port.ToString().PadLeft(6));
 }
}
//扫描类
class Scanner
{
 string m_host;
 int m_port;
 
 public Scanner(string host, int port)
 {
  m_h


相关文档:

C#序列化与反序列化Xml,利用范型做通用化处理

public class yzzSerialize
{
private yzzSerialize()
{ }
private static yzzCache cache = new yzzCache();
public static T GetfromXml<T>(string xmlpath, T t)
{
using (FileStream fs = new FileStream(xmlpath, FileMode.Open, FileAcces ......

C#中string作为引用类型与类的区别的一个问题

RT。先贴代码
C# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Value_Ref_test1
{
class Program
{
static void Main(string[] args)
{
point a = new point (10,10) ;
point b = a;
......

C# 3.0新特性系列:隐含类型var

一.神奇的var
  在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。
  1. 相同点,它可以用var来声明任何类型的局部变量。
  2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。
  二.相同点
  它可以声明
var integer = ......

c#中bin,obj,properties文件夹的作用

  Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
  obj是object的缩写,用于存放 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号