aspnet2014-09-13 03:08:52 8222
Flex Socket:
public function TioCoreTcpService(aRemoteSocketHost:String) { FTCPSocket=new XMLSocket(); FTCPSocket.addEventListener(Event.CONNECT, OnConnectHandler); FTCPSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, OnSecurityErrorHandler); FTCPSocket.addEventListener(Event.CLOSE, OnCloseHandler); FTCPSocket.addEventListener(IOErrorEvent.IO_ERROR, OnIO_Error); FTCPSocket.addEventListener(DataEvent.DATA, OnioTCPServiceReceiveData); Security.loadPolicyFile("XMLSocket://" aRemoteSocketHost ":" csREMOTE_APP_TCP_PROT.toString()); RemoteSocketHost=aRemoteSocketHost; FConnectTimer.addEventListener(TimerEvent.TIMER, OnConnectTimer); } private function OnConnectHandler(event:Event):void { FConnectTimer.stop(); IsSocketConnect=true; FIsConnectCloseEventTrigger=false; this.dispatchEvent(new TAppEvent(TAppEvent.TCP_CONNECT_SUCCESS)); } private function OnCloseHandler(event:Event):void { FConnectTimer.start(); this.dispatchEvent(new TAppEvent(TAppEvent.TCP_CONNECT_CLOSE)); } private function OnSecurityErrorHandler(event:SecurityErrorEvent):void { FConnectTimer.start(); this.dispatchEvent(new TAppEvent(TAppEvent.TCP_CONNECT_SECURITY_ERROR, event.text)); } private function OnIO_Error(event:IOErrorEvent):void { FConnectTimer.start(); this.dispatchEvent(new TAppEvent(TAppEvent.TCP_CONNECT_SECURITY_ERROR, event.text)); } protected function OnioTCPServiceReceiveData(event:DataEvent):void { var mData:String=event.data; if (mData != "") { this.dispatchEvent(new TEventioTcpCoreReceive(mData)); } }
C# Socket:
/// <summary> /// 启动TCP监听 /// </summary> public void StartTcpMonitor() { isStart = false; if (mlistener != null) { mlistener.Stop(); } if (acceptThread != null) { Thread.Sleep(30); acceptThread.Abort(); } EndPoint mEndPoint = new IPEndPoint(IPAddress.Any, 18081); mlistener = new TcpListener(new IPEndPoint(IPAddress.Any, 18081)); isStart = true; mlistener.Start(); acceptThread = new Thread(new ThreadStart(AcceptWorkThread)); acceptThread.IsBackground = true; acceptThread.Start(); } public void StopTcpMonitor() { try { isStart = false; foreach (KeyValuePair<string, Thread> value in mThreadDictionary) { Thread.Sleep(30); value.Value.Abort(); } mThreadDictionary.Clear(); foreach (KeyValuePair<EndPoint, Socket> value in mtcpSocketDictionary) { value.Value.Close(); } mtcpSocketDictionary.Clear(); mlistener.Stop(); acceptThread.Abort(); } catch { } } private void AcceptWorkThread() { if (isStart == true) { while (isStart) { try { Socket tcpsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); tcpsocket = mlistener.AcceptSocket(); receivethread = new Thread(new ParameterizedThreadStart(ThreadCliendHandler)); receivethread.IsBackground = true; receivethread.Start(tcpsocket); } catch (Exception ex) { ErrorLog.WriteErrorLog(" " System.DateTime.Now.ToString() " 错误日志:" ex.ToString(), GlobalApplicationsCore.GetAppliation().errorLogPath); throw ex; } finally { tcpConnectionThreadCount ; if (TcpThreadNumberEvent != null) { TcpThreadNumberEvent(0, tcpConnectionThreadCount); } } } } }
Web端Flex完整项目下载:http://www.pengyaou.com/ChatOnline/DownLoad/Chat.rar
服务端C#完整项目下载:http://www.pengyaou.com/ChatOnline/DownLoad/ChatServier.rar
彭亚欧个人博客原创文章,转载请注明出处
文章关键词:网页聊天室,C#聊天室,网页聊天室实现
文章固定链接:https://www.pengyaou.com/legendsz/server/aspnet/ODI=.html
上一篇 Jquery手风琴导航菜单
下一篇 Jquery图片上下轮滚插件