socket通信例子

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

socket通信例子

string sql="select top 100 * from send";

SqlDataReader datareader =sqlserver.ExecuteSqlDataReader(sql);

if (datareader.HasRows) //有记录才进行网接洽关系接

{

string show;

string host;

//int port =Convert.ToInt16("8801");

//host = Dns.GetHostName();

//host = "192.168.123.110";

socket temp=new socket();

Socket

send=temp.connectSocket(this.remote_ip,this.remote_port);

if (send == null)

{

this.send_listbox("打开长途SMG掉败");

}

else

{

this.send_listbox("打开长途SMG成功");

byte[] bind_content=sgip_test.bind(count);

count_step();

byte[] receive=new byte[256];

byte flag;

send.Send(bind_content,bind_content.Length,0); //bind

send.Receive(receive,29,0); //bind_resp 读取29位

flag=sgip_test.bind_resp_result(receive);

if (flag==0)

this.send_listbox("成功联接到网关");

else

this.send_listbox("联接网关掉败");

while (datareader.Read())

{

string

spnumber=datareader["spnumber"].ToString().Trim();

string

chargenumber=datareader["chargenumber"].ToString().Trim();

string

usernumber=datareader["usernumber"].ToString().Trim();

string

servicetype=datareader["servicetype"].ToString().Trim();

byte

feetype=Byte.Parse(datareader["feetype"].ToString().Trim());

string

feevalue="/datareader["feevalue"].ToString().Trim();

string" content=datareader["content"].ToString().Trim();

byte[]

submit=sgip_test.submit(spnumber,chargenumber,usernumber,servicetype, feetype,feevalue,content,CorpId,count);

send.Send(submit,submit.Length,0);//sumbmit

count_step();

send.Receive(receive,29,0); //submit_resp

flag=sgip_test.submit_resp_result(receive);

if (flag==0)

{

this.send_listbox("手机号:"+usernumber+" 营业代码:"+servicetype+" SP下行号码:"+spnumber);

this.send_listbox("消息内容:"+content);

this.send_listbox("消息发送成功");

string del_sql="delete from send where id="+datareader["id"].ToString().Trim();

sqlserver.ExecuteSqlComand(del_sql);

}

else

this.send_listbox("消息发送掉败");

}

datareader.Close();

byte[] unbind=sgip_test.unbind(count);

count_step();

send.Send(unbind,unbind.Length,0);//unbind

send.Receive(receive,20,0);//unbind_resp 只有消息头

send.Close();

temp=null;

}

}

else

datareader.Close(); //假如没有记录的话,就立时删除联接,不然要超时掉足

Thread.Sleep(100);

}

}

数据写入字撙节

public byte[] submit(string SPNumber,string ChargeNumber,string UserNumber,string ServiceType,byte FeeType,string FeeValue,string MessageContent,string CorpId,uint count)

{

//SPNumber 21字节 text SP的接入号码

//ChargeNumber 21字节 text付费号码,手机号码前加“86”国别标记;当且仅当群发且对用户收费时为空;假如为空,则该条短消息产生的费用由UserNumber代表的用户付出;假如为全零字符串“000000000000000000000”,表示该条短消息产生的费用由SP付出。

//UserCount 1字节 int 接收短消息的手机数量,取值范围1至100

//UserNumber 21字节text 接收该短消息的手机号,该字段反复UserCount指定的次数,手机号码前加“86”国别标记

//CorpId 5字节 text 企业代码,取值范围0-99999

//ServiceType 10字节 text 营业代码,由SP定义

//FeeType 1字节 int 计费类型

//FeeValue 6字节 text 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义对于包月制收费的用户,该值为月租费的值

//GivenValue 6字节 text 取值范围0-99999,赠予用户的话费,单位为分,由SP定义,特指由SP向用户发送告白时的赠予话费

//AgentFlag 1字节 int 代收费标记,0:应收;1:实收

//MorelatetoMTFlag 1字节 int 引起MT消息的原因0-M O点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-体系反馈引起的MT消息。

//Priority 1字节 int 优先级0-9从低到高,默认为0

//ExpireTime 16字节 text 短消息寿命的终止时光,假如为空,表示应用短消息中间的缺省值。时光内容为16个字符,格局为”yymmddhhmmsstnnp” ,个中“tnnp”取固定值“032+”,即默认体系为北京时光

//ScheduleTime 16字节 text 短消息准时发送的时光,假如为空,表示急速发送该短消息。时光内容为16个字符,格局为“yymmddhhmmsstnnp” ,个中“tnnp”取固定值“032+”,即默认体系为北京时光

//ReportFlag 1字节 int 状况申报标记0-该条消息只有最后掉足时要返回状况申报1-该条消息无论最后是否成功都要返回状况申报2-该条消息不须要返回状况申报3-该条消息仅携带包月计费信息,不下发给用户,要返回状况申报其它-保存缺省设置为0

//TP_pid 1字节 int GSM协定类型。具体解释请参考GSM03.40中的9.2.3.9

//TP_udhi 1字节 int GSM协定类型。具体解释请参考GSM03.40中的9.2.3.23,仅应用1位,右对齐

//MessageCoding 1字节 int 短消息的编码格局。0:纯ASCII字符串3:

相关文档
最新文档