代码如下,短信上行没反应,业务响应包也没出,不知道什么原因,忘能得到帮助。
CallBackProc这个是回调函数,按接口里的说明,我连接成功后,并且接受成功后,如果有人发短信到051683719171这个号码,就会调用CallBackProc这个函数,但是现在试了没反应,不知是何故?这个方法压根就进去。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using FULLTUNNELCONTROLLib;
using System.Runtime.InteropServices;
using System.Threading;namespace qxt
{
public delegate void CallBack(String BS_flag, String BS_svalue1, String BS_svalue2, String BS_svalue3, String BS_svalue4, String BS_svalue5, String BS_svalue6, String BS_svalue7, String BS_svalue8); public class Vdata
{
public int vt; public IntPtr pt;
}
public partial class Form1 : Form
{
public Form1(){
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
FullTunnelServiceControl ctr1 = new FullTunnelServiceControl(); string strControl_type = "connect";
string strName = "zzywbadsl";
string strPwd = "1234554321";
string strSenderr = "051683719171";
string strServerip = "218.94.58.243";
string strServerport = "9001";
string strSendtype = "1";
string strBackstr = ""; object hr = ctr1.StartAndManageConnect_User(ref strName, ref strPwd, ref strServerip, ref strServerport);
if (hr.ToString() == "0") { //链接成功
textBox1.Text = "连接认证成功";
}
} private void button2_Click(object sender, EventArgs e)
{
try {
Thread thread = new Thread(new ThreadStart(SendFromDbThread));
thread.Start();
}
catch (Exception ee){
MessageBox.Show("创建发送线程失败");
}
} private static void SendFromDbThread()
{
string strControl_type = "send";
string strName = "zzywbadsl"; //用户名
string strPwd = "1234554321"; //密码
string strSenderr = "051683719171";
string strServerip = "218.94.58.243";
string strServerport = "9001";
string strSendtype = "1";
string strBackstr = "1";
string strSourcecode = "051683719171";
string strDestcode = "13372221206"; //发送的号码
string strContent="我是杨波,收到短信回个。";
string strComid="1";
string strNeedreceipt="1";
string strAccessNum="0513C00014003";
string seqID; FullTunnelServiceControl ctr1 = new FullTunnelServiceControl();
object oOut = null;
object hr = ctr1.SendBusinessPkg(ref strControl_type, ref strName, ref strPwd, ref strSourcecode,
ref strDestcode, ref strServerip, ref strServerport, ref strContent,
ref strSendtype, ref strComid, ref strNeedreceipt,out seqID);
if (hr.ToString() == "1"){
//textBox1.Text = "发送业务包成功" + " 此条短信的SequenceID是:" + seqID;
MessageBox.Show("发送业务包成功");
}
else {
//textBox1.Text = "发送业务包失败"+hr.ToString();
MessageBox.Show("发送业务包fail");
}
} static CallBack ca = new CallBack(Form1.CallBackProc); //得到函数指针
uint pCallBack = (uint)(Marshal.GetFunctionPointerForDelegate(ca).ToInt32()); private void button3_Click(object sender, EventArgs e)
{
FullTunnelServiceControl ctr1 = new FullTunnelServiceControl();
object hr = ctr1.StartRecv_User(pCallBack); if (hr.ToString() == "0"){
textBox1.Text = "接收成功";
}
else {
textBox1.Text = hr.ToString();
}
} public static void CallBackProc(String BS_flag, String svalue1, String svalue2, String svalue3, String svalue4,
String svalue5, String svalue6, String svalue7, String svalue8)
{
MessageBox.Show("进入回调函数里面");
String msgtemp = ""; if ( BS_flag.CompareTo("4") == 0 ){
msgtemp += " [业务响应包] SequenceID:"+ svalue1+" MessID:"+svalue2+" STATUS:"+svalue3;
MessageBox.Show(msgtemp,"业务响应包");
}
else if (BS_flag.CompareTo("5") == 0){
msgtemp += "[上行短信包] SequenceID:" + svalue1 +" 发送号码:" + svalue2 +" 接收号码:" + svalue3+
" 接收时间:" + svalue4 + " 短信内容:" +svalue5;
MessageBox.Show(msgtemp,"上行短信包");
}
else if (BS_flag.CompareTo("7") == 0){
msgtemp += "[短信回执包] SequenceID:" + svalue1 + " MessID:" + svalue2 + " 接收号码:"+ svalue3
+ " 发送号码:" + svalue4 + " 提交时间:"+ svalue5 + " 下发时间:" + svalue6
+" 短信状态:" + svalue7 + " 错误代码:" + svalue8;
MessageBox.Show(msgtemp, "短信回执包");
}
}
}
}
CallBackProc这个是回调函数,按接口里的说明,我连接成功后,并且接受成功后,如果有人发短信到051683719171这个号码,就会调用CallBackProc这个函数,但是现在试了没反应,不知是何故?这个方法压根就进去。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using FULLTUNNELCONTROLLib;
using System.Runtime.InteropServices;
using System.Threading;namespace qxt
{
public delegate void CallBack(String BS_flag, String BS_svalue1, String BS_svalue2, String BS_svalue3, String BS_svalue4, String BS_svalue5, String BS_svalue6, String BS_svalue7, String BS_svalue8); public class Vdata
{
public int vt; public IntPtr pt;
}
public partial class Form1 : Form
{
public Form1(){
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
FullTunnelServiceControl ctr1 = new FullTunnelServiceControl(); string strControl_type = "connect";
string strName = "zzywbadsl";
string strPwd = "1234554321";
string strSenderr = "051683719171";
string strServerip = "218.94.58.243";
string strServerport = "9001";
string strSendtype = "1";
string strBackstr = ""; object hr = ctr1.StartAndManageConnect_User(ref strName, ref strPwd, ref strServerip, ref strServerport);
if (hr.ToString() == "0") { //链接成功
textBox1.Text = "连接认证成功";
}
} private void button2_Click(object sender, EventArgs e)
{
try {
Thread thread = new Thread(new ThreadStart(SendFromDbThread));
thread.Start();
}
catch (Exception ee){
MessageBox.Show("创建发送线程失败");
}
} private static void SendFromDbThread()
{
string strControl_type = "send";
string strName = "zzywbadsl"; //用户名
string strPwd = "1234554321"; //密码
string strSenderr = "051683719171";
string strServerip = "218.94.58.243";
string strServerport = "9001";
string strSendtype = "1";
string strBackstr = "1";
string strSourcecode = "051683719171";
string strDestcode = "13372221206"; //发送的号码
string strContent="我是杨波,收到短信回个。";
string strComid="1";
string strNeedreceipt="1";
string strAccessNum="0513C00014003";
string seqID; FullTunnelServiceControl ctr1 = new FullTunnelServiceControl();
object oOut = null;
object hr = ctr1.SendBusinessPkg(ref strControl_type, ref strName, ref strPwd, ref strSourcecode,
ref strDestcode, ref strServerip, ref strServerport, ref strContent,
ref strSendtype, ref strComid, ref strNeedreceipt,out seqID);
if (hr.ToString() == "1"){
//textBox1.Text = "发送业务包成功" + " 此条短信的SequenceID是:" + seqID;
MessageBox.Show("发送业务包成功");
}
else {
//textBox1.Text = "发送业务包失败"+hr.ToString();
MessageBox.Show("发送业务包fail");
}
} static CallBack ca = new CallBack(Form1.CallBackProc); //得到函数指针
uint pCallBack = (uint)(Marshal.GetFunctionPointerForDelegate(ca).ToInt32()); private void button3_Click(object sender, EventArgs e)
{
FullTunnelServiceControl ctr1 = new FullTunnelServiceControl();
object hr = ctr1.StartRecv_User(pCallBack); if (hr.ToString() == "0"){
textBox1.Text = "接收成功";
}
else {
textBox1.Text = hr.ToString();
}
} public static void CallBackProc(String BS_flag, String svalue1, String svalue2, String svalue3, String svalue4,
String svalue5, String svalue6, String svalue7, String svalue8)
{
MessageBox.Show("进入回调函数里面");
String msgtemp = ""; if ( BS_flag.CompareTo("4") == 0 ){
msgtemp += " [业务响应包] SequenceID:"+ svalue1+" MessID:"+svalue2+" STATUS:"+svalue3;
MessageBox.Show(msgtemp,"业务响应包");
}
else if (BS_flag.CompareTo("5") == 0){
msgtemp += "[上行短信包] SequenceID:" + svalue1 +" 发送号码:" + svalue2 +" 接收号码:" + svalue3+
" 接收时间:" + svalue4 + " 短信内容:" +svalue5;
MessageBox.Show(msgtemp,"上行短信包");
}
else if (BS_flag.CompareTo("7") == 0){
msgtemp += "[短信回执包] SequenceID:" + svalue1 + " MessID:" + svalue2 + " 接收号码:"+ svalue3
+ " 发送号码:" + svalue4 + " 提交时间:"+ svalue5 + " 下发时间:" + svalue6
+" 短信状态:" + svalue7 + " 错误代码:" + svalue8;
MessageBox.Show(msgtemp, "短信回执包");
}
}
}
}
public delegate void CallBack(String BS_flag, String BS_svalue1, String BS_svalue2, String BS_svalue3, String BS_svalue4, String BS_svalue5, String BS_svalue6, String BS_svalue7, String BS_svalue8);static CallBack ca = new CallBack(Form1.CallBackProc); //得到函数指针
uint pCallBack = (uint)(Marshal.GetFunctionPointerForDelegate(ca).ToInt32());用这些代码 好像能完成监听