aspnet2014-09-13 03:08:52 9102

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图片上下轮滚插件