Example #1
0
        public void ThreadCallBack(Object obj)
        {
            _clinet        = obj as ThreadTcpClinet;
            _networkstream = _clinet.TcpClinet.GetStream();
            _formatter     = new BinaryFormatter();

            bool running = true;

            TSqlAdapter SqlAdapter = new TSqlAdapter();

            try
            {
                while (running)
                {
                    _package = (TPackage)_formatter.Deserialize(
                        _networkstream);

                    if (_package.MagicId == 0)
                    {
                        running = false;
                        Toos.Msg_Warn("客户端{0:D5}[{1}]请求结束会话\n",
                                      _clinet.ThreadId, _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
                        break;
                    }

                    SqlAdapter.Save(_package);

                    Toos.Msg_Message("{0}=>{1}#{2};{3};{4}\n",
                                     _clinet.TcpClinet.Client.RemoteEndPoint.ToString(),
                                     Toos.GetLocalIP(), _package.NickFrom, _package.NickTo, _package.Text);
                }
            }
            catch (Exception ex)
            {
                Toos.Msg_Error("错误:{0}\n", ex.StackTrace);
            }
            finally
            {
                Toos.Msg_Warn("线程{0:D5},远程{1} 结束 [OK] .\n",
                              _clinet.ThreadId, _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
                _networkstream.Close();
            }
        }
Example #2
0
        public void Start()
        {
            int i = 1;

            Toos.Msg("服务启动监听 @ {0} .\n", System.ConsoleColor.Green, _tcplistener.LocalEndpoint.ToString());
            _tcplistener.Start();

            while (true)
            {
                _clinet           = new ThreadTcpClinet();
                _clinet.ThreadId  = i;
                _clinet.TcpClinet = _tcplistener.AcceptTcpClient();

                TJobs work = new TJobs();
                ThreadPool.QueueUserWorkItem(work.ThreadCallBack, _clinet);

                Toos.Msg_Warn("客户端({0:D5}) @ {1} 连接[OK]\n", i++,
                              _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
            }
        }