socket通信例子

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

socket通信例子publicvoidsend(){while(true){stringsql=selecttop100*fromsend;SqlDataReaderdatareader=sqlserver.ExecuteSqlDataReader(sql);if(datareader.HasRows)//有记录才进行网关联接{stringshow;stringhost;//intport=Convert.ToInt16(8801);//host=Dns.GetHostName();//host=192.168.123.110;sockettemp=newsocket();Socketsend=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=newbyte[256];byteflag;send.Send(bind_content,bind_content.Length,0);//bindsend.Receive(receive,29,0);//bind_resp读取29位flag=sgip_test.bind_resp_result(receive);if(flag==0)this.send_listbox(成功联接到网关);elsethis.send_listbox(联接网关失败);while(datareader.Read()){stringspnumber=datareader[spnumber].ToString().Trim();stringchargenumber=datareader[chargenumber].ToString().Trim();stringusernumber=datareader[usernumber].ToString().Trim();stringservicetype=datareader[servicetype].ToString().Trim();bytefeetype=Byte.Parse(datareader[feetype].ToString().Trim());stringfeevalue=/datareader[feevalue].ToString().Trim();stringcontent=datareader[content].ToString().Trim();byte[]submit=sgip_test.submit(spnumber,chargenumber,usernumber,servicetype,feetype,feevalue,content,CorpId,count);send.Send(submit,submit.Length,0);//sumbmitcount_step();send.Receive(receive,29,0);//submit_respflag=sgip_test.submit_resp_result(receive);if(flag==0){this.send_listbox(手机号:+usernumber+业务代码:+servicetype+SP下行号码:+spnumber);this.send_listbox(消息内容:+content);this.send_listbox(消息发送成功);stringdel_sql=deletefromsendwhereid=+datareader[id].ToString().Trim();sqlserver.ExecuteSqlComand(del_sql);}elsethis.send_listbox(消息发送失败);}datareader.Close();byte[]unbind=sgip_test.unbind(count);count_step();send.Send(unbind,unbind.Length,0);//unbindsend.Receive(receive,20,0);//unbind_resp只有消息头send.Close();temp=null;}}elsedatareader.Close();//如果没有记录的话,就马上删除联接,不然要超时出错Thread.Sleep(100);}}数据写入字节流publicbyte[]submit(stringSPNumber,stringChargeNumber,stringUserNumber,stringServiceType,byteFeeType,stringFeeValue,stringMessageContent,stringCorpId,uintcount){//SPNumber21字节textSP的接入号码//ChargeNumber21字节text付费号码,手机号码前加“86”国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串“000000000000000000000”,表示该条短消息产生的费用由SP支付。//UserCount1字节int接收短消息的手机数量,取值范围1至100//UserNumber21字节text接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加“86”国别标志//CorpId5字节text企业代码,取值范围0-99999//ServiceType10字节text业务代码,由SP定义//FeeType1字节int计费类型//FeeValue6字节text取值范围0-99999,该条短消息的收费值,单位为分,由SP定义对于包月制收费的用户,该值为月租费的值//GivenValue6字节text取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费//AgentFlag1字节int代收费标志,0:应收;1:实收//MorelatetoMTFlag1字节int引起MT消息的原因0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。//Priority1字节int优先级0-9从低到高,默认为0//ExpireTime16字节text短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为”yymmddhhmmsstnnp”,其中“tnnp”取固定值“032+”,即默认系统为北京时间//ScheduleTime16字节text短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp”,其中“tnnp”取固定值“032+”,即默认系统为北京时间//ReportFlag1字节int状态报告标记0-该条消息只有最后出错时要返回状态报告1-该条消息无论最后是否成功都要返回状态报告2-该条消息不需要返回状态报告3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告其它-保留缺省设置为0//TP_pid1字节intGSM协议类型。详细解释请参考GSM03.40中的9.2.3.9//TP_udhi1字节intGSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐//MessageCoding1字节int短消息的编码格式。0:纯ASCII字符串3:写卡操作4:二进制编码8:UCS2编码15:GBK编码其它参见GSM3.38第4节:SMSDataCodingScheme//MessageType1字节int信息类型:0-短消息信息其它:待定//MessageLength4字节int短消息的长度//MessageContentText短消息的内容//Reserve8字节text保留,扩展用//feetype//计费类别定义//用户计费类别描述//0“短消息类型”为“发送”,对“计费用户号码”不计信息费,此类话单仅用于核减SP对称的信道费//1对“计费用户号码”免费2对“计费用户号码”按条计信息费3对“计费用户号码”按包月收取信息费4对“计费用户号码”的收费是由SP实现byte[]sp_number=Encoding.ASCII.GetBytes(pack.into_string(SPNumber,21));bytecou=1;if(!(UserNumber.Substring(0,2).Equals(86)))UserNumber=86+UserNumber;//还没有加入手机号是否正确的识别byte[]user_number=Encoding.ASCII.GetBytes(pack.into_string(UserNumber,21));if(ChargeNumber.Length1)//chargenumber不写的话,默认为接收手机计费ChargeNumber=UserNumber;else{if(!(ChargeNumber.Substring(0,2).Equals(86)))ChargeNumber=86+ChargeNumber;}byte[]charge_number=Encoding.ASCII.GetBytes(pack.into_string(ChargeNumber,21));byte[]corp_id=Encoding.ASCII.GetBytes(pack.into_string(CorpId,5));byte[]service_type=Encoding.ASCII.GetBytes(pack.into_string(ServiceType,10));byte[]fee_value=/Encoding.ASCII.GetBytes(pack.into_string(FeeValue,6));byte[]given_value=/Encoding.ASCII.GetBytes(pack.into_string(,6));//不填写byteagent_flag=1;//实收bytemore_late_to_mtflag;switch(FeeType)//对momt_flag做处理{case1://对“计费用户号码”免费more_late_to_mtflag=0;break;case2://对“计费用户号码”按条计信息费more_late_to_mtflag=0;break;case3://对“计费用户号码”按包月收取信息费more_late_to_mtflag=3;break;default:more_late_to_mtflag=0;break;}//if(feetype==1)//2按条计信息费//more_late_to_mtflag=0;//暂时写成这个包月时写3bytepriority=0;byte[]expire_time=Encoding.ASCII.GetBytes(pack.into_string(,16));//不填写byte[]schedule_time=Encoding.ASCII.GetBytes(pack.into_string(,16));//不填写bytereport_flag=1;//暂时写成这个bytetp_pid=0;//暂时写成这个,具体的不知道008或者15bytetp_udhi=0;//暂时写成这个,具体的不知道bytemessage_coding=0;//暂时写成这个,具体的不知道//MessageCoding1字节int短消息的编码格式。0:纯ASCII字符串3:写卡操作4:二进制编码8:UCS2编码15:GBK编码其它参

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功