亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

使用C#實現在局域網中發送短信

2023-05-12 12:29:37
字體:
來源:轉載
供稿:網友

由于在單位使用到發手機短信息的地方有很多,可能是從網頁、可能是OUTLOOK中的窗體、也可能是某臺非Windows操作系統的主機的某個系統,所以經過思考探討,覺得最好的解決方案是采用Windows的“服務”,定時從一個目錄中固定格式的文本文件中讀取出相應的信息,發送出去。而其它客戶端只需往該目錄寫入文本信息即可。思路定下來后就讓我們開始吧!

先交待一下開發平臺:

Windows 2000 Advance Server操作系統
  Visual Studio .Net
  Oxygen Sms ActiveX Control V2.3 (Share Ware)
  Nokia 3210手機通過數據線接在COM1上。

運行Visual Studio .Net,新建一個C#的項目,選擇“Windows Server”類型的項目,命名為“SmsServer”。在Server1的設計畫面,將“ServerName”命名為“SmsServer”。點擊“視圖設計器按鈕”切換到設計畫面,在“Windows Forms”工具箱中拖一時鐘控件,命名為“SmsTimer”,在“Components”工具箱中拖一“EventLog”控件。命名為“eventLog1”。在“項目”菜單中點擊“添加引用”,選擇“COM”頁,瀏覽到安裝Oxygen Sms ActiveX Control V2.3程序的目錄,找到SMSControl.ocx添加到“選定的組件”中。

將Server1.cs代碼替換為

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Text

namespace SmsServer
{
 public class SmsServer : System.ServiceProcess.ServiceBase
 {
  private System.Timers.Timer SmsTimer;
  private System.Diagnostics.EventLog eventLog1;
  public O2SMSXControl.O2SMSX SmsX1;//定義手機短信對象

  /// <summary>
  /// Required designer variable.
  /// </summary>

  private System.ComponentModel.Container components = null;
  public SmsServer()
  {
   // This call is required by the Windows.Forms Component Designer.
   InitializeComponent();

   // TODO: Add any initialization after the InitComponent call
  }

  // The main entry point for the process
  static void Main()
  {
   System.ServiceProcess.ServiceBase[] ServicesToRun;

   // More than one user Service may run within the same process. To add
   // another service to this process, change the following line to
   // create a second service object. For example,
   //
   // ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
   //

   ServicesToRun = new System.ServiceProcess.ServiceBase[] { new SmsServer() };

   System.ServiceProcess.ServiceBase.Run(ServicesToRun);
  }

  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>

  private void InitializeComponent()
  {
   this.SmsTimer = new System.Timers.Timer();
   this.eventLog1 = new System.Diagnostics.EventLog();
   ((System.ComponentModel.ISupportInitialize)(this.SmsTimer)).BeginInit();
  ?。ǎ⊿ystem.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
  //
  // SmsTimer
  //
   this.SmsTimer.Enabled = true;
   this.SmsTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.SmsTimer_Elapsed);
  //
  // SmsServer
  //
  this.ServiceName = "SmsServer";
 ?。ǎ⊿ystem.ComponentModel.ISupportInitialize)(this.SmsTimer)).EndInit();
  ((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
 }

 /// <summary>
 /// Clean up any resources being used.
 /// </summary>


 protected override void Dispose( bool disposing )
 {
  if( disposing )
  {
   if (components != null)
   {
    components.Dispose();
   }
  }
  base.Dispose( disposing );
 }

 /// <summary>
 /// Set things in motion so your service can do its work.
 /// </summary>

 protected override void OnStart(string[] args)
 {
  // TODO: Add code here to start your service.
  //開始服務時初始化手機.
  SmsX1 = new O2SMSXControl.O2SMSXClass ();
  SmsX1.ConnectionMode = 0; //聯線類型cable
  SmsX1.ComNumber = 1; //聯接端口為com 1
  SmsX1.Model = 0; //手機類型3210
  SmsX1.Open (); //聯接手機
  SmsX1.SetSMSCNumber ("+8613800754500");//信息中心號碼
 }

 /// <summary>
 /// Stop this service.
 /// </summary>


 protected override void OnStop()
 {
  // TODO: Add code here to perform any tear-down necessary to stop your service.
  SmsX1.Close ();
 }

 private void SmsTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
  //當f:/sms/data/filetosend有文件時,先關閉時鐘,將其發送出去,并刪除掉文件再啟動時鐘
  this.SmsTimer.Enabled =false;

  //目錄對象
  DirectoryInfo cd = new System.IO.DirectoryInfo("F://Sms//Data//FileToSend");
  //數據庫記錄變量
  string rsId;
  string rsPhoneNum;
  string rsSmsText;

  string StrSql;

  //首先,在當前目錄中列舉當前的所有SMS文件
  foreach(FileInfo FileSend in cd.GetFiles ())
  {
   try
   {
    //依次打開每個文件讀取文件內容
    FileStream fs = new FileStream (cd.FullName + "//" + FileSend.Name,FileMode.Open,FileAccess.Read );
   StreamReader sr;
   sr = new StreamReader(fs,UnicodeEncoding.GetEncoding ("GB2312"));
   rsId = FileSend.Name .ToString ();
   rsId = rsId.Replace (".sms","");
   rsId = rsId.Trim ();
   rsPhoneNum = sr.ReadLine ();
   rsPhoneNum = rsPhoneNum.Trim ();
   if (rsPhoneNum.Length >11)
    rsPhoneNum = rsPhoneNum.Substring (0,10);
    rsSmsText = sr.ReadToEnd();
    rsSmsText = rsSmsText.Trim ();
    if (rsSmsText.Length >50)
     rsSmsText.Substring (0,49);
     fs.Close ();
     sr.Close ();

     //發送短信息
     SmsX1.SendUnicodeSMSMessage (rsPhoneNum.ToString (),rsSmsText.ToString (),6,false,"");

     //備份并刪除文件
     FileSend.CopyTo ("F://Sms//Data//HadBeenSend//" + FileSend.Name ,true);
     FileSend.Delete ();
   }
   catch(System.Exception E)
   {
   //出錯寫LOG文件
    eventLog1.WriteEntry (E.Message.ToString ());
   }
  }
  //重新啟動時鐘
  this.SmsTimer.Enabled =true;
  }
 }
}
 

在 Server1.cs切換設計畫面,在屬性窗口下點擊“Add Installer”,系統自動增加ProjectInstaller.cs文件,點擊serviceInstaller1,設置“Server Name”設置為“SmsServer”,點擊“serviceProcessInstaller1”,設置Account為“LocalSystem”。

選擇菜單“生成”中的“生成SmsServer”,改正可能有的錯誤。進行DOSming令行,進行項目目錄的/bin/debug目錄下,執行“installutil SmsServer”,如果找不到installutil程序,就先Path一下。這時,在管理工具的“服務”下可以找到“SmsServer”服務了。啟動該服務。這里默認源為目錄F:/Sms/Data/FileToSend,如果這個目錄有.SMS文件,就讀取其第一行為發送的手機號碼,第二行到文本結束為短信息內容,然后發送短信息,再將文本備份到F:/Sms/Data/HadBeenSend/。

讓我們再回頭看一下Server1.cs中的代碼。首先在ming令空間要增加“using System.IO; using System.Text ”方便處理文件及文本對象,在命名類時

public class SmsServer : System.ServiceProcess.ServiceBase
       { 
              private System.Timers.Timer SmsTimer; 
              private System.Diagnostics.EventLog eventLog1; 
              public O2SMSXControl.O2SMSX SmsX1;//定義手機短信對象 
              ......
       }

引用Oxygen控件中的定義SmsX1對象,然后在啟動服務時初始化手機對象:

protected override void OnStart(string[] args) 
       { 
              // TODO: Add code here to start your service. 
              //開始服務時初始化手機. 
              SmsX1 = new O2SMSXControl.O2SMSXClass (); 
              SmsX1.ConnectionMode = 0; //聯線類型cable 
              SmsX1.ComNumber = 1; //聯接端口為com 1 
              SmsX1.Model = 0; //手機類型3210 
              SmsX1.Open (); //聯接手機 
              SmsX1.SetSMSCNumber ("+8613800754500");//信息中心號碼 
       }

其中要注意的是要初始化信息中心號碼,如果不初始化,經常有發不去的情況。然后當時鐘觸發時要注意先將時鐘關掉,再列舉當前目錄中的.SMS文件,逐一發送出去,再將時鐘打開,同時在讀文件時,要注意文件的編碼 “sr=new StreamReader(fs,UnicodeEncoding.GetEncoding ("GB2312"));”采用GB2312編碼讀取才不會讀出亂碼出來,最后發送信息即可,“SmsX1.SendUnicodeSMSMessage (rsPhoneNum.ToString (),rsSmsText.ToString (),6,false,""); ”其中各個參數的含義可以參照Oxygen的幫助。最后在服務停止時釋放短信息對象“SmsX1.Close ();” 如果出錯,則寫出錯服務LOG文件“eventLog1.WriteEntry (E.Message.ToString ());”這樣,在Windows的“事件查看器”就可以看到出錯的信息了。

但是這里有個小小的遺憾,通過OCX控件發出的短信息前面有一串該網站的英文,但是注冊版不會有這串字,注冊“只需”¥399就可以了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久亚洲天堂| 国产一区二区欧美日韩| 欧美极品少妇xxxxⅹ裸体艺术| 日本在线观看天堂男亚洲| 国产欧美日韩最新| 国产精品久久久久高潮| 欧美高清在线视频观看不卡| 九九精品在线视频| 国产精品久久久久影院日本| 欧美黄色片视频| 欧美最猛性xxxx| 国语自产精品视频在线看一大j8| 81精品国产乱码久久久久久| 久久久精品影院| 日韩成人在线免费观看| 久久国产精品99国产精| 日韩亚洲欧美中文在线| 午夜欧美不卡精品aaaaa| 久久成年人免费电影| 欧美一区二区三区图| 国产成人激情视频| 欧美激情综合色综合啪啪五月| 欧美在线亚洲一区| 欧美激情视频一区二区三区不卡| 伊人一区二区三区久久精品| 日韩视频在线免费| 国产精品久久久久久久av大片| 成人中心免费视频| 91高清免费视频| 最近2019免费中文字幕视频三| 日韩电影免费观看中文字幕| 亚洲国产精品视频在线观看| 国产一区视频在线播放| 日韩精品一区二区视频| 亚洲国产天堂网精品网站| 欧美激情在线狂野欧美精品| 欧美日本黄视频| 国产91免费看片| 九九热视频这里只有精品| 2019国产精品自在线拍国产不卡| 欧美激情网友自拍| 亚洲新中文字幕| 国产精品久久久久免费a∨大胸| 最近2019年手机中文字幕| 精品久久久视频| 深夜成人在线观看| 国产精品女人久久久久久| 国内精品久久久| 国产精品一区专区欧美日韩| 亚洲理论电影网| 亚洲精品理论电影| 日本中文字幕久久看| www.国产一区| 97色在线播放视频| 国产精品欧美日韩久久| 91精品国产成人www| 亚洲最新视频在线| 亚洲国产精品大全| 欧美精品一区三区| 国产精品免费电影| 中文字幕久久久av一区| 国产精品久久久久久久久久小说| 国产91成人在在线播放| 综合国产在线视频| 国产丝袜精品视频| 久久久久久九九九| 亚洲缚视频在线观看| 77777少妇光屁股久久一区| 91精品国产成人www| 色先锋资源久久综合5566| 欧美老女人www| 国产成人激情小视频| 精品国产一区二区三区久久狼5月| 91精品视频免费观看| 亚洲精品黄网在线观看| 国产亚洲成精品久久| 国产精品91在线| 欧美亚洲国产日本| 亚洲自拍偷拍色片视频| 亚洲第一区第二区| 91欧美日韩一区| 久久久成人精品视频| 懂色av一区二区三区| 久久久黄色av| 国产精品国产三级国产aⅴ浪潮| 国产精品成人播放| 中文字幕九色91在线| 精品国产一区二区三区久久久狼| 日韩欧美国产激情| 欧美激情亚洲激情| 亚洲欧美日本伦理| 欧美大片在线看免费观看| 色青青草原桃花久久综合| 98精品国产自产在线观看| 欧美老女人在线视频| 日韩av日韩在线观看| 亚洲精品日韩久久久| 91夜夜揉人人捏人人添红杏| 欧美电影免费观看| 日韩精品亚洲精品| 亚洲精品大尺度| 欧美猛男性生活免费| 亚洲精品美女在线观看| 欧美老女人在线视频| 国产日韩在线播放| 欧美肥婆姓交大片| 国产日韩欧美中文| 91精品国产乱码久久久久久久久| 久久在线观看视频| 久久精品视频在线| 欧美激情精品在线| 国产精品7m视频| 一区二区三区久久精品| 亚洲a成v人在线观看| 精品久久中文字幕久久av| 亚洲黄色在线观看| 伊人久久免费视频| 久久亚洲国产精品成人av秋霞| 麻豆国产精品va在线观看不卡| 亚洲精品乱码久久久久久金桔影视| 国产女人18毛片水18精品| 国产欧美一区二区三区在线| 国产精品女视频| 久久视频免费在线播放| 国模视频一区二区三区| 中文字幕av一区| 日韩在线观看免费av| 国产在线精品成人一区二区三区| 久久人人爽人人爽人人片av高请| 日韩精品高清在线观看| 亚洲国产黄色片| 久久久久久久影院| 欧美大片免费观看在线观看网站推荐| 欧美老女人xx| 精品毛片网大全| 国产精品欧美日韩一区二区| 国产一区二区丝袜高跟鞋图片| 91精品啪在线观看麻豆免费| 精品久久久久久久久国产字幕| 欧美性69xxxx肥| 欧美最顶级丰满的aⅴ艳星| 亚洲毛片在线看| 国产精品夜间视频香蕉| 九九久久国产精品| 国产午夜精品全部视频在线播放| 一区二区三区美女xx视频| 人人做人人澡人人爽欧美| 亚洲一区中文字幕在线观看| 亚洲精品综合精品自拍| 亚洲一区二区三| 亚洲人成免费电影| 日韩黄在线观看| 最近日韩中文字幕中文| 日韩av大片免费看| 国产成人精品在线| 欧美理论在线观看| 亚洲美女中文字幕| 亚洲网址你懂得| 欧美成人精品在线视频| 国产精品美女av| 亚洲成av人片在线观看香蕉| 亚洲色无码播放| 日日骚久久av| 欧美日韩一区二区在线播放|