在线咨询
微博
网吧论坛
游戏告警
网吧特权
全站搜索
APP下载
开网吧
开网咖
注册
网吧转让
网吧供求
关注微信
网吧联盟论坛
网吧系统
┊
网吧经营
┊
网吧无盘
网吧计费
┊
网吧心声
┊
网咖天下
网吧论坛
┊
网吧专题
┊
网吧游戏
首 页
网吧网咖
天下网咖
网吧无盘
网吧技术
网吧经营
电竞酒店
网吧方案
网吧路由
系统开号
推荐大家使用天下网吧小程序
办理Steam特权,网吧加速器,开号服务
网吧无盘系统开号
网吧管理
网吧政策
网吧经营
网吧热点
网吧配机
网吧装修
网吧转让
网吧观点
网吧系统
技术论坛
网吧系统
无盘技术
软件技术
硬件技术
网络技术
网吧路由
网吧安全
网吧故障
网吧计费
技术论坛
无盘教程
无盘优化
无盘工具
无盘配机
无盘故障
无盘论坛
VLAN方案
无线方案
方案实例
方案分析
装修方案
游戏管理
整体方案
无盘方案
软件方案
网络方案
网吧政策
网吧经营
网吧展示
网吧装修
网吧配机
产品评测
产品导购
最新动态
配机展示
网咖桌椅
网咖经营
电竞网咖
网咖VR
网咖水吧
网咖转型
网咖配机
网咖动态
网咖微信营销
网咖欣赏
路由教程
路由下载
路由脚本
路由经验
路由施工
路由工具
路由论坛
宁夏
浙江
贵州
其它省市
四川
电竞酒店网络
电竞酒店装修
行业动态
电竞酒店管理
电竞酒店系统
推荐网吧
网吧黄页
网吧装修
环境设施
网吧电脑
网吧软件
系统桌面
国外网吧
您现在的位置:
天下网吧
>>
网吧天地
>>
天下码农
>>
微信小程序
>> 正文
用C#设计在局域网发送短信的程序
2010-12-22
vczx
佚名
【
大
中
小
】
由于在单位使用到发手机短信息的地方有很多,可能是从网页、可能是OUTLOOK中的窗体、也可能是某台非Windows操作系统的主机的某个系统,所以经过思考探讨,觉得最好的解决方案是采用Windows的“服务”,定时从一个目录中固定格式的文本文件中读取出相应的信息,发送出去。而其它客户端只需往该目录写入文本信息即可。思路定下来后就让我们开始吧!
2fVd?SB
RMIw%D4|*Z
先交待一下开发平台:
M=6XYU
, !gsI_6|w
Windows 2000 Advance Server操作系统
_[G:i*)
Visual Studio .Net
|JQzS.P/F
Oxygen Sms ActiveX Control V2.3 (Share Ware)
?F<YUeT
Nokia 3210手机通过数据线接在COM1上。
!Ir~iob
d<~nEA0Y
运行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添加到“选定的组件”中。
w s?{(Zl
将Server1.cs代码替换为
PsT?tK^,;
o8_)f COS
using System;
BC8I!*SN
using System.Collections;
uh1*|Ww^E
using System.ComponentModel;
x_{rP{I
using System.Data;
9i'/d ,Y/
using System.Diagnostics;
+Zu)Z<3c-S
using System.ServiceProcess;
|5-*,ao
using System.IO;
RmK~/PFU
using System.Text
}jLL
JUnz/<>QI
namespace SmsServer
I=6q!`
{
btS cU;n
public class SmsServer : System.ServiceProcess.ServiceBase
pTnf0WI
{
ivz-/6_(x
private System.Timers.Timer SmsTimer;
1RR2|O
private System.Diagnostics.EventLog eventLog1;
mzKZL8bz
public O2SMSXControl.O2SMSX SmsX1;//定义手机短信对象
-D;J*0'
// <summary>
F}}GyC
// Required designer variable.
W d5FV,BL
// </summary>
#;;:~;lXk
private System.ComponentModel.Container components = null;
} WCyFj:9
public SmsServer()
! M:z<5E"
{
vW abjA.f
// This call is required by the Windows.Forms Component Designer.
& ecD
Bc } /onP
InitializeComponent();
#5& 8) V
// TODO: Add any initialization after the InitComponent call
EY,~)[`
}
SCpv}6`0
:spbk@s
// The main entry point for the process
8[wgsY$HK
static void Main()
q$^Lpd4
{
C/8K7MC'N
System.ServiceProcess.ServiceBase[] ServicesToRun;
s[ Qz:I)
sbVUu#-;xZ
// More than one user Service may run within the same process. To add
6=C,d2ILC
// another service to this process, change the following line to
|_8cYTXw
// create a second service object. For example,
x3CKx&NS
//
_L=+mdeq
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
cyi7!zGc
//
R5/~oAd[
@ke[(}b![L
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new SmsServer() };
wX7<HWV
3]-{l <ni
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
y#$z4lE#
}
tM 3-p
QF?:5MG
/// <summary>
w[i' -jD
/// Required method for Designer support - do not modify
}6H>z P
/// the contents of this method with the code editor.
T6qA6
/// </summary>
`Gvv0>aw
Hq p$SA{B
private void InitializeComponent()
+4{MNmoB
{
e%; u,!PK+
this.SmsTimer = new System.Timers.Timer();
. ~!SUg0m
this.eventLog1 = new System.Diagnostics.EventLog();
u^ 1L9Y
((System.ComponentModel.ISupportInitialize)(this.SmsTimer)).BeginInit();
V4tvh*Jn
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
NnB!8|-
//
tL8>sY;
// SmsTimer
D+)}8v9
//
>68 6Y9qJ
this.SmsTimer.Enabled = true;
#X)s( |7w
this.SmsTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.SmsTimer_Elapsed);
B pt}!}8
//
N"j=7
// SmsServer
~W_AiT h[
//
uj`f K
this.ServiceName = SmsServer;
f =1[
((System.ComponentModel.ISupportInitialize)(this.SmsTimer)).EndInit();
`7j!S!'8
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
g'i & 5dX
}
Nq)`X7N0
cStP#XeM
/// <summary>
=Q)T$yg?
/// Clean up any resources being used.
Z=v -;j@%
/// </summary>
S.yVJ[e(
8ly5*u/
HeeKDD5u
protected override void Dispose( bool disposing )
s)6`$?Zj
{
`]^"q5h'P
if( disposing )
k4o aX
{
7vvo$'.
if (components != null)
g{:-w|x2
{
ktEWo:,R@
components.Dispose();
E"1ZD'%y
}
d1/5'JZA
}
j;p]Fbf*b
base.Dispose( disposing );
?H%q<2WvJ
}
K.!oV!?q
3i$? )0l<
/// <summary>
U'~j6P06
/// Set things in motion so your service can do its work.
[.!}0z*
/// </summary>
QcEf_s*3
"n|:t$-$-
protected override void OnStart(string[] args)
)`Eeo
{
v87}p/
// TODO: Add code here to start your service.
mA(a:rY-
//开始服务时初始化手机.
a|"}Np{
SmsX1 = new O2SMSXControl.O2SMSXClass ();
rmo|& 2X7
SmsX1.ConnectionMode = 0; //联线类型cable
2j JIOm1
SmsX1.ComNumber = 1; //联接端口为com 1
vt'[^.r
SmsX1.Model = 0; //手机类型3210
iT{OdL
SmsX1.Open (); //联接手机
]x+yrS3qQh
SmsX1.SetSMSCNumber (+8613800754500);//信息中心号码
ocUCtu2*g
}
m{;= vD
!9QifV}
/// <summary>
rwk98SU-t
/// Stop this service.
NmTB'RRK
/// </summary>
@HA
dR(B O
ypnJLRW
protected override void OnStop()
B37V3N&
{
}5U|3|
// TODO: Add code here to perform any tear-down necessary to stop your service.
dl jFB
SmsX1.Close ();
Wy12;iuCf
}
wZH7(&l96a
Z>oPl{|.|S
private void SmsTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
O ,"mLE[
{
O3Y0#^
//当f:smsdatafiletosend有文件时,先关闭时钟,将其发送出去,并删除掉文件再启动时钟
kIX*rq #
this.SmsTimer.Enabled =false;
81o^PdK
g A[wO@
//目录对象
?k'zKV[c
DirectoryInfo cd = new System.IO.DirectoryInfo(F:\Sms\Data\FileToSend);
#}hzU q
//数据库记录变量
#"KTqqH
string rsId;
x(,`6+:kd
string rsPhoneNum;
v~&-p"OA'/
string rsSmsText;
[Q #u4Fx
}k 0 8}Rv
string StrSql;
V}SN}4$L
g8DH; =t
//首先,在当前目录中列举当前的所有SMS文件
]QA B_
foreach(FileInfo FileSend in cd.GetFiles ())
7w|Y "`g
{
>1" ZIwp&
try
.=>Kw
{
}c8M,5c
//依次打开每个文件读取文件内容
< z/ yQJ
FileStream fs = new FileStream (cd.FullName + \ + FileSend.Name,FileMode.Open,FileAccess.Read );
P"DFkc
StreamReader sr;
mG)y 3G
sr = new StreamReader(fs,UnicodeEncoding.GetEncoding (GB2312));
'9wl %4edn
rsId = FileSend.Name .ToString ();
k#dizXK`S
rsId = rsId.Replace (.sms,);
FSb0T$[4
rsId = rsId.Trim ();
AHq? .Xe
rsPhoneNum = sr.ReadLine ();
G0=&rv_zK
rsPhoneNum = rsPhoneNum.Trim ();
YfAk#pRF
if (rsPhoneNum.Length >11)
'ZHxS(
rsPhoneNum = rsPhoneNum.Substring (0,10);
@0;;5a
rsSmsText = sr.ReadToEnd();
N'v SR%
rsSmsText = rsSmsText.Trim ();
vVpAWI>nd
if (rsSmsText.Length >50)
o]e!G(E
rsSmsText.Substring (0,49);
7YToJ}
fs.Close ();
DL:!%_
sr.Close ();
] `N:~*
8i7zVU:S9
//发送短信息
@R=,'Wk
SmsX1.SendUnicodeSMSMessage (rsPhoneNum.ToString (),rsSmsText.ToString (),6,false,);
pC_j6;nn.
L-*hchs
//备份并删除文件
K y9g)y
FileSend.CopyTo (F:\Sms\Data\HadBeenSend\ + FileSend.Name ,true);
GR)c7Y'*8
FileSend.Delete ();
a6a}4EpT
}
tbky Fm
catch(System.Exception E)
u;w `F
{
ft5}N*C(e6
//出错写LOG文件
it 'gS=8
eventLog1.WriteEntry (E.Message.ToString ());
C(3 Wn:mg
}
OvLH<;v
}
,h5"Z 2L
//重新启动时钟
rNlUh
this.SmsTimer.Enabled =true;
tG[K j+
}
UywGpZkcr)
}
lXx& ^D,]{
}
e|@nNk
>JxRlPK
s7I3-XbJ
在 Server1.cs切换设计画面,在属性窗口下点击“Add Installer”,系统自动增加ProjectInstaller.cs文件,点击serviceInstaller1,设置“Server Name”设置为“SmsServer”,点击“serviceProcessInstaller1”,设置Account为“LocalSystem”。
,J0Y
]T"Iy5|m
选择菜单“生成”中的“生成SmsServer”,改正可能有的错误。进行DOS命令行,进行项目目录的bindebug目录下,执行“installutil SmsServer”,如果找不到installutil程序,就先Path一下。这时,在管理工具的“服务”下可以找到“SmsServer”服务了。启动该服务。这里默认源为目录F:SmsDataFileToSend,如果这个目录有.SMS文件,就读取其第一行为发送的手机号码,第二行到文本结束为短信息内容,然后发送短信息,再将文本备份到F:SmsDataHadBeenSend。
ALjo<6(?
IBT.&uc
<script>zmbbs=1;</script>
kTz{|Y
$~ .<wfl`p
让我们再回头看一下Server1.cs中的代码。首先在命令空间要增加“using System.IO; using System.Text ”方便处理文件及文本对象,在命名类时
J*Rqeaq=8
(EsdT7Zz
public class SmsServer : System.ServiceProcess.ServiceBase
5PP$x):)E
{
RHp]>~
private System.Timers.Timer SmsTimer;
sx</T"#x
private System.Diagnostics.EventLog eventLog1;
,(l_ 8
public O2SMSXControl.O2SMSX SmsX1;//定义手机短信对象
8:-W~sWks
......
O.+^+k
a5>s#
引用Oxygen控件中的定义SmsX1对象,然后在启动服务时初始化手机对象:
* y!q#JB
ft5='#
protected override void OnStart(string[] args)
9o^h(J
{
@ea!u:?i
// TODO: Add code here to start your service.
eMPm_|
//开始服务时初始化手机.
l.K PqIJ
SmsX1 = new O2SMSXControl.O2SMSXClass ();
Lxc*/
SmsX1.ConnectionMode = 0; //联线类型cable
P`2dtF;
SmsX1.ComNumber = 1; //联接端口为com 1
Es8yl
SmsX1.Model = 0; //手机类型3210
8EX`v0lEe
SmsX1.Open (); //联接手机
X EY|8n
SmsX1.SetSMSCNumber (+8613800754500);//信息中心号码
,)N- 5g
}
@(0ix;o_L
0 Gpvw
G/RxH$uf
其中要注意的是要初始化信息中心号码,如果不初始化,经常有发不去的情况。然后当时钟触发时ya 注意先将时钟关掉,再列举当前目录中的.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的“事件查看器”就可以看到出错的信息了。
?2=@w"D/nj
XU B#~swa
但是这里有个小小的遗憾,通过OCX控件发出的短信息前面有一串该网站的英文,但是注册版不会有这串字。
h.9]t:Hy
<script>zmbbs=1;</script>
欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛
https://bbs.txwb.com
关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩
本文来源:
vczx
作者:佚名
上一篇文章:
利用XML模板分析c#中固定长度流文件
下一篇文章:
导出列表控件内容项到Excel文件简单实现
相关文章
win7环境用pptv看电影占用CPU内存100%
win7系统XLUEOPS.exe进程占用CPU很高
如何使用cmd命令的一些教程
网吧系统下QQ占用CPU资源太高怎么解决
开发者基于Beacon技术推节食应用Carrot Hunge
用CCBOOT无盘的一点经验
相册应用Cooliris联合豌豆荚推出Android版
Twitter宣布收购Android锁屏应用Cover
怎样利用chmod命令更改Linux系统权限
常见的三款QQ游戏使用cf金牌网吧代理享受的特
推荐专题 ┊
更多专题..
网吧卫生
网吧电脑配置
开网吧
网吧键盘
网吧配置
网吧GHOST
ROS
网吧软件故障解决
网众无盘
网吧游戏菜单
网吧活动
网吧优化
网吧精品
网吧新手
声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:
1175525021
本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下
推荐文章
网吧语音呼叫哪款好用?体验简约
免费绿色简单的网吧语音呼叫系统,天下网吧会员的经典作品,功能强大,使用简单,上手
解决网吧Steam登陆慢的批处理源码
本批处理是解决Steam登陆慢的问题专门编写。原理是修改hosts文件让相关域……
网吧语音呼叫哪款好用?体验简约绿
解决网吧Steam登陆慢的批处理源码
疫情当下,网吧自救讨论之二:租电
疫情下网吧转让增多,疫情期间接手
洛阳网吧求助信,疫情下的网吧行业
网吧做好系统安全,防盗号三要三不
网吧和电竞酒店使用的系统教程和下
网吧千兆低成本升级方案:2.5G到桌
网吧员工服务态度怎么抓上去,我网
关于WIN10下网吧客户端中文输入法与
最新文章
又是一家疫情期间违规营业的网吧
之前天下网吧注意到相关的新闻并发布了预警内容提醒各位疫情期间请按相关规定操作。……
部分网吧英雄联盟卡顿现象持续,
自从3-31日英雄联盟停机更新维护以来,不少网吧在天下网吧上反映卡顿的问题。天……
又是一家疫情期间违规营业的网吧:负责
部分网吧英雄联盟卡顿现象持续,官方称
2022-04-02日网吧游戏更新信息,敬请关注
web端看图神器viewer.js,修复移动端触
网吧Steam每次启动都提示更新,查找日志
网吧疫情停业的网吧自救方案,有人已经
「韬光养晦」二十多年,Intel发力PC端独
设置网吧Steam节点到ChongQing,实现游
2022-04-01日网吧游戏更新信息,敬请关注
macOS Monterey 12.3.1值得升级吗?MBP
本周热门
本月热门
阅读排行
网吧疫情停业的网吧自救方案,有人
网吧语音呼叫哪款好用?体验简约绿
解决网吧Steam登陆慢的批处理源码
又是一家疫情期间违规营业的网吧:
部分网吧英雄联盟卡顿现象持续,官
2022-04-02日网吧游戏更新信息,敬请
web端看图神器viewer.js,修复移动
网吧Steam每次启动都提示更新,查找
LOL酒桶打野E闪 雷柏VT30电竞
雷柏VH650耳机推荐听大片—八佰
网吧和电竞酒店使用的系统教程和下
最近网吧老被盗号,分享一款工具可
英雄联盟进不去,卡「重新连接」界
带120台以上的大型网吧/电竞酒店游
网吧的英雄联盟掉帧、卡顿,CF卡顿
2022年网咖最常玩的游戏是啥?来看
最近显卡降价了,2060快降到发行价
杨天祥与他的网吧故事——网吧行业
2022年网吧可以用电子身份证了吗?
开网吧一天能赚多少钱的数据分析
网吧员工服务态度怎么抓上去,我网
网吧千兆低成本升级方案:2.5G到桌
网吧和电竞酒店使用的系统教程和下
最近网吧老被盗号,分享一款工具可
英雄联盟进不去,卡「重新连接」界
2022年开网吧服务器电脑配置方案三
自从干了网吧,成了人下人了,见谁
从23个习惯中可以看出你是不是老网
带120台以上的大型网吧/电竞酒店游
网吧的英雄联盟掉帧、卡顿,CF卡顿
正在加载..