G


    using System; using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    //using System.Messaging;
    using System.Net.Sockets;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.IO;
    using System.Threading ;
    using System.Net;
    namespace GprsServer
    {   public class GprsServer : System.Windows.Forms.Form
    {
    [DllImport("User32.dll",EntryPoint="SendMessage")]
    private static extern int   SendMessage(  int hWnd, // handle to destination window
    int Msg, // message
    int wParam, // first message parameter
    string lParam // second message parameter
    );
    [DllImport("User32.dll",EntryPoint="FindWindow")]  private static extern int FindWindow(string lpClassName,string lpWindowName); 
    [DllImport("kernel32.dll")]  public static extern int GetPrivateProfileString ( string section ,string key , string def , StringBuilder retVal ,int size , string filePath ) ;
    [DllImport("kernel32")]   public static extern long WritePrivateProfileString ( string section,string key,string val,string filePath ) ;
    private System.ComponentModel.IContainer components;   public static int LocaPort;//本地端口 
    public static string RemoteIp;  public static int RemotePort;//远程端口 
    public static string sCompanyName;//公司名称 
    private Icon m_Icon1;   private Icon m_Icon2;  private Icon m_Icon3; 
        private NotifyIcon notifyIcon; 
        MenuItem menuItem1;
        MenuItem menuItem2; 
        private Hashtable CarID_RemoteIP_Hash; 
    private Thread thGprs ;
        private Thread thTcpMsg ;
        private Socket socket;
        private Socket TcpSocket;
        private System.Windows.Forms.Timer TimerIcon;
        private System.Windows.Forms.Label lblInfo;
    private System.Windows.Forms.Timer TimerConn; 
        private byte[] TempBuff; 
        private System.Windows.Forms.CheckBox checkBox1;
        private System.Windows.Forms.ImageList imgList;// = new byte[1024];
    private byte[] TcpBuff; 
        private System.Windows.Forms.ListView lvwMsg;
        private System.Windows.Forms.ColumnHeader sId;
        private System.Windows.Forms.ColumnHeader sNote;
    private System.Windows.Forms.Button cmdExit;
        private System.Windows.Forms.Button cmdSet;// = new byte[2048]; 
    private bool bTsFlag=false;
        public GprsServer()
        { 
            InitializeComponent();  //检测配置文件目录是否存在
    GetSysPra();   TempBuff= new byte[1];
    TcpBuff=new byte[1]; 
    //m_Icon1 = new Icon("SysFile//Icon1.ico"); 
    //m_Icon2 = new Icon("SysFile//Icon2.ico"); 
    //m_Icon3 = new Icon("SysFile//Icon3.ico");  
    notifyIcon = new NotifyIcon(); 
    notifyIcon.Icon = m_Icon1;
    notifyIcon.Text = sCompanyName; 
    notifyIcon.Visible = true;
    menuItem1=new MenuItem("设置"); 
    menuItem2=new MenuItem("退出");  
    menuItem1.Click+=new EventHandler(this.menuItem1_Click); 
    menuItem2.Click+=new EventHandler(this.menuItem2_Click); 
    notifyIcon.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2});
    notifyIcon.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick); 
    CarID_RemoteIP_Hash=new Hashtable();
    thGprs = new Thread(new ThreadStart(ReadUdp)) ;
    //启动线程  thGprs.IsBackground =true;//将线程作为后台线程处理,用途,当主线程关闭,子线程随着关闭 
    thGprs.Start( ); 
    try  {  IPHostEntry IPHost = Dns.Resolve(RemoteIp); 
    string []aliases = IPHost.Aliases; 
    IPAddress []addr = IPHost.AddressList;  EndPoint ep = new IPEndPoint(addr[0],RemotePort);
    TcpSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  TcpSocket.Connect(ep);  
    thTcpMsg = new Thread (new ThreadStart(ReadTcpMsg)) ;  //启动线程
    thTcpMsg.IsBackground =true;  thTcpMsg.Start( ) ;  lblInfo.Text ="系统运行正常,正在中转GPRS数据...";
    }  catch  {}  } 
    private void GetSysPra() 
    {
    StringBuilder temp = new StringBuilder(255);
    if (Directory.Exists("SysIni")) 
    {  if (File.Exists("SysIni//SysIni.ini")) 
    {  int i;  i= GetPrivateProfileString("PortIni","UdpPort","",temp,255,"SysIni//SysIni.ini");
    if (i==0) 
    {  LocaPort=8888;  WritePrivateProfileString("PortIni","UdpPort","8888","SysIni//SysIni.ini");
    } 
    else 
    {  LocaPort=int.Parse(temp.ToString( ));
    }
    i = GetPrivateProfileString("Company","Name","",temp,255,"SysIni//SysIni.ini");
    if (i==0)  {  sCompanyName="龙翰科技";  WritePrivateProfileString("Company","Name","龙翰科技","SysIni//SysIni.ini");
    }  else  {  sCompanyName=temp.ToString( ); 
    }  i = GetPrivateProfileString("PortIni","TcpAddress","",temp,255,"SysIni//SysIni.ini");
    if (i==0)  {  RemoteIp="127.0.0.1";  WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni//SysIni.ini");
    }
    else  {  RemoteIp=temp.ToString( );
    } 
    i = GetPrivateProfileString("PortIni","TcpPort","",temp,255,"SysIni//SysIni.ini"); 
    if (i==0)  {  RemotePort=6666;  WritePrivateProfileString("PortIni","TcpPort","6666","SysIni//SysIni.ini"); 
    }  else  {  RemotePort=int.Parse(temp.ToString( ));  }
    }  else 
    {  //
    File.Create("SysIni//SysIni.ini",255);
    LocaPort=8888;
    WritePrivateProfileString("PortIni","UdpPort","8888","SysIni//SysIni.ini"); 
    sCompanyName="龙翰科技";  WritePrivateProfileString("Company","Name","龙翰科技","SysIni//SysIni.ini");
    RemoteIp="127.0.0.1";  WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni//SysIni.ini");
    RemotePort=6666;  WritePrivateProfileString("PortIni","TcpPort","6666","SysIni//SysIni.ini"); 
    }
    }  else
    {  Directory.CreateDirectory("SysIni"); 
    //
    File.Create("SysIni//SysIni.ini",255);
    LocaPort=8888; 
    WritePrivateProfileString("PortIni","UdpPort","8888","SysIni//SysIni.ini");
    sCompanyName="龙翰科技";  WritePrivateProfileString("Company","Name","龙翰科技","SysIni//SysIni.ini"); 
    RemoteIp="127.0.0.1";  WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni//SysIni.ini");  RemotePort=6666;
    WritePrivateProfileString("PortIni","TcpPort","6666","SysIni//SysIni.ini");  }  } 
    private void menuItem1_Click(object sender,System.EventArgs e) 
    {
    // 
    } 
    private void menuItem2_Click(object sender,System.EventArgs e) 
    {   this.Close();   Application.Exit();  
    } 
    private void notifyIcon_DBClick(object sender, System.EventArgs e)
    {
    //
    }
    protected override void Dispose( bool disposing ) 
    {
    if( disposing ) 
    { 
    if (components != null) 
    {
    components.Dispose();
    }  notifyIcon.Visible =false;;
    notifyIcon.Icon=null;  notifyIcon.Dispose();
    m_Icon1.Dispose();  m_Icon2.Dispose();  m_Icon3.Dispose();
    } 
    base.Dispose( disposing );
    }  
    private void InitializeComponent()  {  this.components = new System.ComponentModel.Container();  System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(GprsServer));
    this.TimerIcon = new System.Windows.Forms.Timer(this.components);  this.lblInfo = new System.Windows.Forms.Label();  this.TimerConn = new System.Windows.Forms.Timer(this.components);
    this.lvwMsg = new System.Windows.Forms.ListView();  this.sId = new System.Windows.Forms.ColumnHeader();  this.sNote = new System.Windows.Forms.ColumnHeader();
    this.imgList = new System.Windows.Forms.ImageList(this.components);  this.checkBox1 = new System.Windows.Forms.CheckBox();  this.cmdExit = new System.Windows.Forms.Button();
    this.cmdSet = new System.Windows.Forms.Button();  this.SuspendLayout();  //   // TimerIcon  //
    this.TimerIcon.Enabled = true;  this.TimerIcon.Interval = 1000;  this.TimerIcon.Tick += new System.EventHandler(this.TimerIcon_Tick);  //   // lblInfo  //
    this.lblInfo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;  this.lblInfo.Location = new System.Drawing.Point(4, 298);
    this.lblInfo.Name = "lblInfo";  this.lblInfo.Size = new System.Drawing.Size(310, 23);  this.lblInfo.TabIndex = 0;
    this.lblInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;  //   // TimerConn  // 
    this.TimerConn.Enabled = true;
    this.TimerConn.Interval = 6000;  this.TimerConn.Tick += new System.EventHandler(this.TimerConn_Tick);  //   // lvwMsg  // 
    this.lvwMsg.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {  this.sId,  this.sNote});  this.lvwMsg.FullRowSelect = true;
    this.lvwMsg.Location = new System.Drawing.Point(2, 2);  this.lvwMsg.Name = "lvwMsg";  this.lvwMsg.Size = new System.Drawing.Size(564, 292);
    this.lvwMsg.SmallImageList = this.imgList;  this.lvwMsg.TabIndex = 1;  this.lvwMsg.View = System.Windows.Forms.View.Details;  //   // sId  //  
    this.sId.Text = "";  this.sId.Width = 21;  //   // sNote  //   this.sNote.Text = "消息内容";  this.sNote.Width = 522;  //   // imgList  //  
    this.imgList.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit;  this.imgList.ImageSize = new System.Drawing.Size(16, 16);
    //  this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));
    this.imgList.TransparentColor = System.Drawing.Color.Transparent;  //   // checkBox1  //  

    this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
    this.checkBox1.Location = new System.Drawing.Point(332, 300);  this.checkBox1.Name = "checkBox1";  this.checkBox1.Size = new System.Drawing.Size(104, 19); 
    this.checkBox1.TabIndex = 2;  this.checkBox1.Text = "显示调试数据";  this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);  //   // cmdExit  // 
    this.cmdExit.FlatStyle = System.Windows.Forms.FlatStyle.Popup;  this.cmdExit.Location = new System.Drawing.Point(504, 298);  this.cmdExit.Name = "cmdExit"; 
    this.cmdExit.Size = new System.Drawing.Size(60, 22);  this.cmdExit.TabIndex = 3;  this.cmdExit.Text = "退出(&E)";  this.cmdExit.Click += new System.EventHandler(this.cmdExit_Click);  //   // cmdSet  //
    this.cmdSet.FlatStyle = System.Windows.Forms.FlatStyle.Popup;  this.cmdSet.Location = new System.Drawing.Point(432, 298);  this.cmdSet.Name = "cmdSet";  this.cmdSet.Size = new System.Drawing.Size(60, 22);  this.cmdSet.TabIndex = 4;  this.cmdSet.Text = "设置(&S)";  this.cmdSet.Click += new System.EventHandler(this.cmdSet_Click);  //   // GprsServer  //
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);  this.ClientSize = new System.Drawing.Size(566, 323);  this.Controls.Add(this.cmdSet); 
    this.Controls.Add(this.cmdExit);  this.Controls.Add(this.checkBox1);  this.Controls.Add(this.lvwMsg);  this.Controls.Add(this.lblInfo); 
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;  this.MaximizeBox = false; 
    this.Name = "GprsServer";  this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;  this.Text = "中继服务器";  this.Load += new System.EventHandler(this.GprsServer_Load); 
    this.ResumeLayout(false);   }
    static void Main()
    { 
    Application.Run(new GprsServer()); 
    }  
    private byte Get_CheckXor(ref byte[] temp,int len)
    {


    byte A=0;  for(int i=0;i<len;i++)
    {
    A^=temp[i]; 
    } 
    return A; 
    } 
        private void ReadTcpMsg() //读取用户发送的指令数据 
    { 
            byte[] buff= new byte[2048];
    string CartIpAddress="";//车辆的IP地址
    EndPoint TempRemote = null; 
    int recv = 0;
            byte[] Tbuff; 
            byte[] AllBuff;
            int iLenght=0;
            int iIndex=0; 
            int iLen=0;
            int iXorValue=0; 
           
            while(true) 
    { 
        try 
            {
                   
                     recv=TcpSocket.Receive(buff,0,TcpSocket.Available,SocketFlags.None);//读取数据内容 
                    if (recv==0)
                    {
                            recv=TcpSocket.Receive(buff,0,TcpSocket.Available,SocketFlags.None);//读取数据内容
                            if (recv==0) 
                            {
                                TcpSocket.Close(); 
                                break; 
                            }
                    }  
            } 
     
                catch 
            {
            break; 
            }  
        AllBuff=new byte[recv +TcpBuff.Length]; 
    for (iIndex = 1; iIndex <=TcpBuff.Length; iIndex++)

    { 
        AllBuff[iIndex-1]=TcpBuff[iIndex-1];
    } 
    for (iIndex = 1; iIndex <=recv; iIndex++)
    {
        AllBuff[TcpBuff.Length+iIndex-1]=buff[iIndex-1];
    }  
    for (iIndex = 1; iIndex <=AllBuff.Length; iIndex++) 
    { 
        iLenght=AllBuff.Length-iIndex+1;
        if (iLenght<6)//检测数据包长度
        { 
            //不完整,则将指令保存 
                if (iLenght>0)
                {
                    TcpBuff=new byte[iLenght]; 
                        for (iLen = 1; iLen <=iLenght; iLen++) 
                        { 
                            TcpBuff[iLen-1]=AllBuff[iLen+iIndex-2];
                        } 
                } 
        break;
        } 
    else 
        {  //检测当前指令是否是完整的指令,查找数据包头 
    if (AllBuff[iIndex-1]==0x29 & AllBuff[iIndex]==0x29)

    { 
        if ((AllBuff.Length -iIndex)>=(AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4))
   
        {  //检测当前指令是否是完整的指令 
   
            if ((AllBuff[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+iIndex+3])==0x0D)
   
            {  //在接收的数据中获取单条完整的指令数据 
   
                Tbuff=new byte[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+5];
   
                for (iLen = 1; iLen <=Tbuff.Length; iLen++)
   
                { 
                    Tbuff[iLen-1]=AllBuff[iLen+iIndex-2];
   
                }
   
                iXorValue=Get_CheckXor(ref Tbuff,Tbuff.Length-2);
   
                if(iXorValue!=Tbuff[Tbuff.Length-2]) 
                {  //校验不合格,继续查找合法指令数据
       
                    continue; 
   
                }
                else
   
                { 
                    if (bTsFlag)
   
                    { 
                    string BuffToStr="";
      
                   
                        for(int i=0;i<Tbuff.Length;i++) 
       
                   
                        { 
                      
                            BuffToStr+=Tbuff[i].ToString("X2")+" "; 
       
                   
                        }
       
                        ShowSysMsg(BuffToStr,2); 
   
                    }  //获取车载终端手机号
        CartIpAddress=Tbuff[5]+"." +Tbuff[6] +"."+Tbuff[7] +"."+Tbuff[8];
        TempRemote=(EndPoint)CarID_RemoteIP_Hash[CartIpAddress];
        if( TempRemote==null)
        { 
            if (bTsFlag) 
       
            {
                ShowSysMsg("无法查找到接收数据的远程终节点!",3);
            } 
        } 
        else 
        { 
            try 
            { 
                socket.SendTo(Tbuff,TempRemote);
           
                if (bTsFlag) 
            { 
                    ShowSysMsg("数据成功转发到车载终端!",1);
            } 
            } 
            catch
       
            { 
                if (bTsFlag) 
       
                {  ShowSysMsg("数据转发到车载终端失败!",3); 
       
                } 
            }
        } 
                    iIndex=iIndex+Tbuff.Length-1;
                    TcpBuff=new byte[1]; 
   
                } 
  
            } 
   
           
            else 
   
            { 
   
                continue;
   
            }
    } 
        else
        { 
   
            if
        ((AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4)>1024)
   
            { 
                continue; 
            }
   
            else  {  //不完整,则将指令保存 
   
                if (iLenght>0)
   
                {
       
                    TcpBuff=new byte[iLenght]; 
       
                    for (iLen = 1; iLen <=iLenght; iLen++) 
       
                    { 
                        TcpBuff[iLen-1]=AllBuff[iLen+iIndex-2];
       
                    }
                    break;
   
                } 
                else 
                {
      
                    TcpBuff=new byte[1];
                    break; 
                } 
       
            } 
        } 
    }  
    else 
    {  continue; 
    } 
    }//检测数据包长度 
    } 
    } 
    }  
    public void ShowSysMsg(string sNote,int iIcon) 
    {  //显示系统消息
    try  {
    lvwMsg.BeginUpdate();
    if (lvwMsg.Items.Count >100)  lvwMsg.Items.Clear(); 
    ListViewItem li = new ListViewItem(); 
    //
    li.SubItems[0].Text =sNote ;
    li.SubItems.Add (sNote);
    li.ImageIndex=iIcon;  lvwMsg.Items.Add(li);  lvwMsg.EndUpdate(); 
    }  catch  {}  } 
    private void ReadUdp() //从UDP数据端口读取GPRS数据
    {  byte[] buff = new byte[1024]; 
    int recv = 0;  byte[] Tbuff; 
    byte[] AllBuff;  int iLenght=0;
    int iIndex=0;  int iLen=0;  int iXorValue=0;  string CarIpAddress="";  byte[] RecvAffirmBuff=new byte[]{0x29,0x29,0x21,0x00,0x05,0,0,0,0,0x0D}
    ;//回应终端数组 
    IPEndPoint ipep = new IPEndPoint(IPAddress.Any ,LocaPort);   //
    socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
    socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    try  {  socket.Bind(ipep);  ShowSysMsg("系统成功在"+LocaPort + "端口侦听!",6);
    }  catch  {  ShowSysMsg("端口"+LocaPort+"已被占用,系统侦听失败!",5);  return;
    }  IPEndPoint sender = new IPEndPoint(IPAddress.Any , 0)
    ;//指远程终端(终节点)Ip地址对象 IPAddress.Any表示任何地址 0 表示任何端口
    EndPoint remote = (EndPoint)(sender); //指远程终端(终节点) 
    while(true)
    {  try 
    {  recv = socket.ReceiveFrom(buff , ref remote);
    }  catch  {  ShowSysMsg("接收车载终端数据错误!",3); 
    } 
    //---------------------you2004-12-31 begin------------------------------// 
    AllBuff=new byte[recv +TempBuff.Length];  for (iIndex = 1; iIndex <=TempBuff.Length; iIndex++)  {  AllBuff[iIndex-1]=TempBuff[iIndex-1];  }  
    for (iIndex = 1; iIndex <=recv; iIndex++)  {  AllBuff[TempBuff.Length+iIndex-1]=buff[iIndex-1];  } 
    for (iIndex = 1; iIndex <=AllBuff.Length; iIndex++)  {  iLenght=AllBuff.Length-iIndex+1;
    if (iLenght<6)
    //检测数据包长度 
    {  //不完整,则将指令保存 
    if (iLenght>0)
    {  TempBuff=new byte[iLenght]; 
    for (iLen = 1; iLen <=iLenght; iLen++)
    {  TempBuff[iLen-1]=AllBuff[iLen+iIndex-2]; 
    } 
    } 
    break;
    }  else  {  //检测当前指令是否是完整的指令,查找数据包头
    if (AllBuff[iIndex-1]==0x29 & AllBuff[iIndex]==0x29) 
    {  if ((AllBuff.Length -iIndex)>=(AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4))  {
    //检测当前指令是否是完整的指令 
    if ((AllBuff[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+iIndex+3])==0x0D) 
    {  //在接收的数据中获取单条完整的指令数据
        Tbuff=new byte[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+5];
        for (iLen = 1; iLen <=Tbuff.Length; iLen++) 
        {  Tbuff[iLen-1]=AllBuff[iLen+iIndex-2]; 
        }

        iXorValue=Get_CheckXor(ref Tbuff,Tbuff.Length-2); 
        if(iXorValue!=Tbuff[Tbuff.Length-2]) 
        {  //校验不合格,继续查找合法指令数据 
            continue;
        }  else  {  if (bTsFlag)
        {  string BuffToStr="";  for(int i=0;i<Tbuff.Length;i++)
        {  BuffToStr+=Tbuff[i].ToString("X2")+" ";  }  ShowSysMsg(BuffToStr,0);  }  
            //获取车载终端手机号
            CarIpAddress=Tbuff[5]+"." +Tbuff[6] +"."+Tbuff[7] +"."+Tbuff[8];
            //-----------------检测系统哈希表是否包含此终端数据---------------------// 
            if(CarID_RemoteIP_Hash.ContainsKey(CarIpAddress))
            {
                CarID_RemoteIP_Hash[CarIpAddress]=remote;//有更新
            } 
            else 
            {  CarID_RemoteIP_Hash.Add(CarIpAddress,remote);//没有添加
            }   //--------------------将数据转发到中心处理程序-----------------// 
            if (TcpSocket.Connected) 
            {
                try 
            { 
                TcpSocket.Send(Tbuff,0,Tbuff.Length,SocketFlags.None);
                if (bTsFlag) 
            { 
                    ShowSysMsg("数据成功转发到网络中心处理程序!",1); 
                }
            } 
                catch
                { 
                    if (bTsFlag) 
            {  ShowSysMsg("数据转发到网络中心处理程序失败!",3);
            }
            }
            }  //-------------------向终端发出0x21的接收确认-------------------//
            RecvAffirmBuff[5]=Tbuff[Tbuff.Length-2];  RecvAffirmBuff[6]=Tbuff[2];  RecvAffirmBuff[7]=Tbuff[9];  RecvAffirmBuff[8]=Get_CheckXor(ref RecvAffirmBuff,8); 
            socket.SendTo(RecvAffirmBuff,remote);  iIndex=iIndex+Tbuff.Length-1;  TempBuff=new byte[1];
        }
    }
    else  {  continue;
    } 
    }  else
    { 
        if ((AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4)>1024) 
    {  continue;
        } 
        else 
        {  //不完整,则将指令保存
    if (iLenght>0)
    {  TempBuff=new byte[iLenght];  for (iLen = 1; iLen <=iLenght; iLen++)
    { 
        TempBuff[iLen-1]=AllBuff[iLen+iIndex-2];
    } 
        break; 
    } 
    else 
    {  TempBuff=new byte[1];  break;
    } 
        } 
    } 
    } 
    else 
    { 
        continue;
    } 
    }//检测数据包长度  
    }  //---------------------you2004-12-31 end------------------------------//
    }  
    }
    private void GprsServer_Load(object sender, System.EventArgs e)
    {  // 
    }  
    int I=0;
    private void TimerIcon_Tick(object sender, System.EventArgs e) 
    {
    if(thGprs!=null)
    {   if(thGprs.IsAlive)  notifyIcon.Icon=notifyIcon.Icon==m_Icon1?m_Icon2:m_Icon1;
    else  notifyIcon.Icon=notifyIcon.Icon==m_Icon1?m_Icon3:m_Icon1; 
    }  I++;  if(I>5)  {  I=FindWindow(null,@sCompanyName);
    if( I!= 0)
    {  SendMessage(I,0x501,1002,"");
    }  I=0;  }  
    }  
    private void TimerConn_Tick(object sender, System.EventArgs e) 
    { 
    if (!TcpSocket.Connected)
    {  try 
    { 
        lblInfo.Text ="与中心数据处理程序断开,正在进行二次连接..."; 
        IPHostEntry IPHost = Dns.Resolve(RemoteIp); 
    string []aliases = IPHost.Aliases; 
    IPAddress []addr = IPHost.AddressList;
     EndPoint ep = new IPEndPoint(addr[0],RemotePort);
    TcpSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    TcpSocket.Connect(ep);
    thTcpMsg = new Thread ( new ThreadStart(ReadTcpMsg)) ;  //启动线程
    thTcpMsg.IsBackground =true;  thTcpMsg.Start( ) ;
    lblInfo.Text ="系统运行正常,正在中转GPRS数据...";
    }
    catch 
    {
    return; 
    }
    } 
    }  
    private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
    {
        bTsFlag=checkBox1.Checked;
    }  
        private void cmdExit_Click(object sender, System.EventArgs e)
        {
    if(MessageBox.Show("确定关闭中继服务器?", "提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information) == DialogResult.Yes) 
    {  Application.Exit ();
    } 
    } 
    private void cmdSet_Click(object sender, System.EventArgs e)
    { 
    //frmUdpSet frmudpset=new frmUdpSet();
    //frmudpset.Show();
    }   
                                                                                                                       
            
    protected override void OnClosing(CancelEventArgs e) 
    {  e.Cancel =true;
    this.WindowState =FormWindowState.Minimized;
    }
    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值