/// <summary> /// 被线程调用 监听连接端口 /// </summary> void StartWatch() { string recode; while (isWatch) { //threadWatch.SetApartmentState(ApartmentState.STA); //监听 客户端 连接请求,但是,Accept会阻断当前线程 Socket sokMsg = sokWatch.Accept();//监听到请求,立即创建负责与该客户端套接字通信的套接字 ConnectionClient connection = new ConnectionClient(sokMsg, ShowMsg, RemoveClientConnection); //将负责与当前连接请求客户端 通信的套接字所在的连接通信类 对象 装入集合 dictConn.Add(sokMsg.RemoteEndPoint.ToString(), connection); //将 通信套接字 加入 集合,并以通信套接字的远程IpPort作为键 //dictSocket.Add(sokMsg.RemoteEndPoint.ToString(), sokMsg); //将 通信套接字的 客户端IP端口保存在下拉框里 cboClient.Items.Add(sokMsg.RemoteEndPoint.ToString()); //MessageBox.Show("有一个客户端新添加!"); recode = sokMsg.RemoteEndPoint.ToString(); //调用GetSystemTime函数获取系统时间信息 SYSTEMTIME_INFO StInfo; StInfo = new SYSTEMTIME_INFO(); GetSystemTime(ref StInfo); recode += "子计算机在" + StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日"; recode += (StInfo.wHour + 8).ToString() + "点" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒" + "连接服务"; //记录每台子计算机连接服务主机的日志 StreamWriter m_sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + @"\file.DAT", true); m_sw.WriteLine(recode); m_sw.WriteLine("------------------------------------------------------------------"); m_sw.Close(); //MessageBox.Show(recode); dictConn[sokMsg.RemoteEndPoint.ToString()].SendTrue(); //启动一个新线程,负责监听该客户端发来的数据 //Thread threadConnection = new Thread(ReciveMsg); //threadConnection.IsBackground = true; //threadConnection.Start(sokMsg); } }