⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.cs

📁 联通的SGIP发送代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

using JLL.SGIP;
using System.Net;
using System.Net.Sockets;

namespace Test2
{
    class Program
    {
        private static Socket _socket;
        private static Deliver _deliver;
        private static byte[] _buffer;
        private static byte[] _receiveBuffer;

        private static void init()
        {
            Bind b = new Bind();
            b.LoginName = "jll";
            b.LoginPassword = "jll";
            b.LoginType = 2;

            byte[] buffer = new byte[SgipConfig.MaxBufferCount];
            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _socket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8802));
            _socket.Send(Command.CreateCommand(b).GetBytes());
            _socket.Receive(buffer);

            _deliver  = new Deliver();
            _deliver.SPNumber = "8088001";
            _deliver.MessageContent = "hello";

            _buffer = Command.CreateCommand(_deliver).GetBytes();
            _socket.BeginSend(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(OnSendDataCallback), _socket);
            
            _receiveBuffer = new byte[4096];
            _socket.BeginReceive(_receiveBuffer, 0, _receiveBuffer.Length, SocketFlags.None, new AsyncCallback(onReceiveData), _socket);
        }

        private static volatile int _sendCount = 0;

        private static void OnSendDataCallback(IAsyncResult ar)
        {
            Socket s = (Socket)ar.AsyncState;
            try
            {
                s.EndSend(ar);
                if (++_sendCount < 2)
                {
                    if ((_sendCount % 1000) == 0)
                    {
                        Console.WriteLine(_sendCount);
                        //System.Threading.Thread.Sleep(3000);
                    }
                    _buffer = Command.CreateCommand(_deliver).GetBytes();
                    s.BeginSend(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(OnSendDataCallback), s);
                }
                else
                {
                    Console.WriteLine("发送结束:{0}", _sendCount);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine("发生错误,但共发送结束:{0}", _sendCount);
            }
        }

        private static volatile int _receiveCount = 0;

        private static void onReceiveData(IAsyncResult ar)
        {
            Socket s = (Socket)ar.AsyncState;
            try
            {
                int nRead = s.EndReceive(ar);
                if (nRead > 0)
                {
                    ++_receiveCount;
                    Console.WriteLine("共接收到了应答:{0}", _receiveCount);
                    s.BeginReceive(_receiveBuffer, 0, _receiveBuffer.Length, SocketFlags.None, new AsyncCallback(onReceiveData), s);
                    return;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            
        }


        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("begin to work!");
                init();
                Console.Read();
            }
            finally
            {
                SgipHelper.ShutdownAndCloseSocket(_socket);
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -