日期:2014-05-18 浏览次数:20589 次
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Threading;
using System.Net.Sockets;
using System.Net;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Data;
using System.Windows.Forms;
using System.Configuration;
using Microsoft.Win32;
using System.Diagnostics;
using System.Timers;
namespace WSGPSGateway
{
public partial class TcpServer : Form
{
public TcpServer()
{
InitializeComponent();
}
#region 自定义字段
public static ManualResetEvent allDone = new ManualResetEvent(false);
/// <summary>
/// 监听控件开启状态
/// </summary>
private bool State = true;
/// <summary>
/// 声明一个线程实例
/// </summary>
private Thread mythread;
/// <summary>
/// 服务器端Ip
/// </summary>
private int _port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
/// <summary>
/// 保存客户端所有回话的哈希表
/// </summary>
private Hashtable _transmit_tb = new Hashtable();
/// <summary>
/// 用于接受消息的线程
/// </summary>
private Thread _receviccethread = null;
public struct TCPParameter
{
public string Package;
public string IpAddress;
}
#endregion
#region 监听代码块
//窗体运行
private void TcpServer_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.Opacity = 0; // 窗体透明度
Form.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
mythread = new Thread(Listen);
mythread.Start();
System.Timers.Timer atimer = new System.Timers.Timer();
atimer.Elapsed += new System.Timers.ElapsedEventHandler(TimeEvent);
atimer.Interval = 1000;
atimer.Enabled = true;
GC.KeepAlive(atimer);
}
private object threadlock = new object();
//启动监听
private void BtnStart_Click(object sender, EventArgs e)
{
//多线程
}
//启动监听,轮询监听客户机请求并将客户端套接字存入转发表
private void Listen()
{
try
{