8

我知道有很多第三方网站可以通过互联网发送批量短信,但如果我想自己创建一个,我该怎么做?我知道如何使用我的手机创建短信网关,这很慢。有没有其他方法可以创建互联网短信网关?

4

4 回答 4

6

我为我的雇主设计了类似的东西(尽管短信数量要少得多)。Linux 服务器连接到蓝牙 USB 加密狗,用于从实验室中的嵌入式传感器设备和 Siemens TC35 GSM 调制解调器通过 RS232 串行链路接收数据。如果传感器确定存在同样由 C++ 程序处理的问题,则服务器可以向选定员工的电话发送消息。此外,还有一个 J2EE 应用程序允许员工通过网页输入消息,然后将这些消息作为文本消息发送给他们选择的员工。J2EE 应用程序将消息转储到数据库中,然后由 C++ 程序收集并AT通过 TC35 使用命令发送。以这种方式完成,因此传感器问题消息始终具有优先权。

编程方面没什么特别的,因为AT命令很容易理解。只需确保您的程序是安全的,这样它就不会被垃圾邮件发送者劫持,并且调制解调器位于具有良好 GSM/3G 覆盖范围的房间中,并且不在地下室中。

哦,让您的程序定期向 GSM 调制解调器询问其信号强度和其他小区基站信息并将其存储在一个特殊的数据库表中也是一个好主意。这将使您能够发现您的手机提供商的问题,并在需要时转移到另一家。我使用此信息发现我使用的基站似乎脱机或经常出现技术问题,这导致我的调制解调器消息吞吐量减慢到涓涓细流。

祝你好运

于 2010-02-25T11:02:20.773 回答
4

它可以通过两种方式完成 1)GSM 调制解调器 2)http(服务提供商)(比调制解调器快)

我使用过http://www.ozekisms.com/网关服务

发送 Http 请求的 C# 代码以及如何添加用户名和密码 IP 地址和端口。

请参考此代码,希望对您有所帮助。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SMSClient;

namespace SMSDemoConsole
{
    class Program
    {
        private static void WriteEvent(String myEvent)
        {
            Console.WriteLine(myEvent);
        }

        #region Events
        static void mySMSClient_OnMessageReceived(object sender, DeliveryEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + "Message received. Sender address: " + e.Senderaddress + " Message text: " + e.Messagedata + "\r\n");
        }

        static void mySMSClient_OnMessageDeliveryError(object sender, DeliveryErrorEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + "Message could not be delivered. ID: " + e.Messageid + " Error message: " + e.ErrorMessage + "\r\n");
        }

        static void mySMSClient_OnMessageDeliveredToHandset(object sender, DeliveryEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + "Message delivered to handset. ID: " + e.Messageid + "\r\n");
        }

        static void mySMSClient_OnMessageDeliveredToNetwork(object sender, DeliveryEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + "Message delivered to network. ID: " + e.Messageid + "\r\n");
        }

        static void mySMSClient_OnMessageAcceptedForDelivery(object sender, DeliveryEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + "Message accepted for delivery. ID: " + e.Messageid + "\r\n");
        }

        static void mySMSClient_OnClientConnectionError(object sender, ErrorEventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " " + e.ErrorMessage + "\r\n");
        }

        static void mySMSClient_OnClientDisconnected(object sender, EventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " Disconnected from the SMS gateway " + "\r\n");
        }

        static void mySMSClient_OnClientConnected(object sender, EventArgs e)
        {
            WriteEvent(DateTime.Now.ToString() + " Successfully connected to the SMS gateway " + "\r\n");
        }
        #endregion

        static void Main(string[] args)
        {
            ozSMSClient mySMSClient = new ozSMSClient();
            mySMSClient.OnClientConnected += new SimpleEventHandler(mySMSClient_OnClientConnected);
            mySMSClient.OnClientDisconnected += new SimpleEventHandler(mySMSClient_OnClientDisconnected);
            mySMSClient.OnClientConnectionError += new ErrorEventHandler(mySMSClient_OnClientConnectionError);
            mySMSClient.OnMessageAcceptedForDelivery += new DeliveryEventHandler(mySMSClient_OnMessageAcceptedForDelivery);
            mySMSClient.OnMessageDeliveredToNetwork += new DeliveryEventHandler(mySMSClient_OnMessageDeliveredToNetwork);
            mySMSClient.OnMessageDeliveredToHandset += new DeliveryEventHandler(mySMSClient_OnMessageDeliveredToHandset);
            mySMSClient.OnMessageDeliveryError += new DeliveryErrorEventHandler(mySMSClient_OnMessageDeliveryError);
            mySMSClient.OnMessageReceived += new DeliveryEventHandler(mySMSClient_OnMessageReceived);

            mySMSClient.Username = "admin";
            mySMSClient.Password = "abc123";
            mySMSClient.Host = "127.0.0.1";
            mySMSClient.Port = 9500;

            mySMSClient.Connected = true;

            mySMSClient.sendMessage("+44987654", "TEST", "vp=" + DateTime.Now + "&ttt=werwerwe rewwe34232 1");


            Console.ReadKey();
            mySMSClient.Connected = false;
        }
    }
}

谢谢。

于 2012-04-21T12:34:44.197 回答
3

您需要使用SMPP协议与 SMSC 通话。你也可以使用Kannel,它提供了很好的功能来处理不同类型的 SMSC,包括 GSM 调制解调器以及send-smsHTTP 服务等等。

于 2009-08-29T16:08:17.847 回答
2

嗯...根据您的要求,您将需要一个 GSM 调制解调器。使用它,您可以使用标准 AT 命令发送 SMS 消息。然后你需要开发一个 HTTP 服务器来获取请求,处理它并将 AT 命令发送到 GSM 调制解调器。

于 2009-08-29T16:03:10.603 回答