class TCPClass
{
Dictionary<string, Socket> dict = new Dictionary<string, Socket>();//存放套接字
Dictionary<string, Thread> dictThread = new Dictionary<string, Thread>();//存放线程
Dictionary<string, List<byte[]>> rec_buf = new Dictionary<string, List<byte[]>>();//存放接收的数据
//开启tcp监听
public void start_tcp_scoket()
{
IPEndPoint newipep = new IPEndPoint(IPAddress.Any, API.tcp_port);
// 创建负责监听的套接字,注意其中的参数;
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
// 将负责监听的套接字绑定到唯一的ip和端口上;
socketWatch.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
socketWatch.Bind(newipep);
//socketWatch.ReceiveTimeout=100000;//超时时间
}
catch (SocketException se)
{
Console.WriteLine("异常:" + se.Message);
API.tb.Dispatcher.Invoke(new Action(
delegate
{
API.tb.Text += "异常:" + se.Message+"\r\n";
}
));
socketWatch.Close();
//this.start_tcp_scoket();
return;
}
// 设置监听队列的长度;
socketWatch.Listen(10);
// 创建负责监听的线程;
Thread threadWatch = new Thread(WatchConnecting);
threadWatch.IsBackground = true;
threadWatch.Start(socketWatch);
API.tb.Dispatcher.Invoke(new Action(
delegate
{
API.tb.Text += API.tcp_port + "服务器启动监听成功!" + "\r\n";
}
));
Console.WriteLine(API.tcp_port+"服务器启动监听成功!");
}
/// <summary>
/// 监听客户端请求的方法;
/// </summary>
void WatchConnecting(object socketW)
{
while (true) // 持续不断的监听客户端的连接请求;
{
Console.WriteLine("新客户端连接成功!");
API.tb.Dispatcher