silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

    Main.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; usin
 
 
@H_924_25@main.cs

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Collections.Generic;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.ComponentModel;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Data;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Drawing;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Linq;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Text;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Forms;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Net.sockets;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Net;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Threading;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.IO;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

namespace SocketServer

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

{

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

         public partial class Main : Form

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                SynchronizationContext _syncContext;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                System.Timers.Timer _timer;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 信息结束符,用于判断是否完整地读取了用户发送的信息(要与客户端的信息结束符相对应)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private String _endMarker = "^";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 服务端监听的 socket

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private Socket _listener;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 实例化 ManualResetEvent, 设置其初始状态为非终止状态(可入状态)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private ManualResetEvent _connectDone = new ManualResetEvent( false);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 客户端 Socket 列表

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private List<ClientSocketPacket> _clientList = new List<ClientSocketPacket>();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 public Main()

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        initializeComponent();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // UI 线程

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _syncContext = SynchronizationContext.Current;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 启动后台线程去运行 Socket 服务

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        Thread thread = new Thread( new ThreadStart(StartupSocketServer));

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        thread.IsBACkground = true;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        thread.Start();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void StartupSocketServer()

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 每 10 秒运行一次计时器所指定的方法

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _timer = new System.Timers.Timer();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _timer.Interval = 10000d;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _timer.Start();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 初始化 socket , 然后与端口绑定, 然后对端口进行监听

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _listener.bind( new IPEndPoint(Ipaddress.Any,4518)); // Silverlight 2.0 使用 Socket 只能连接 4502-4534 端口

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _listener.Listen(100);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         while ( true)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 重置 ManualResetEvent,由此线程来控制 ManualResetEvent,其它到这里来的线程请等待

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 为求简单易懂,本例实际上只有主线程会在这里循环运行

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _connectDone.Reset();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 开始接受客户端传入的连接

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _listener.beginAccept( new AsyncCallBACk(OnClientConnect),null);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 阻止当前线程,直到当前 ManualResetEvent 调用 Set 发出继续信号

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _connectDone.WaitOne();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void _timer_Elapsed( object sender,System.Timers.ElapsedEventArgs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 每 10 秒给所有连入的客户端发送一次消息

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        SendData( String.Format( "webabcd 对所有人说:大家好! 【信息来自服务端 {0}】",datetiR_551_11845@e.Now.ToString( "hh:mm:ss")));

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void OnClientConnect(IAsyncResult asynC)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 当前 ManualResetEvent 调用 Set 以发出继续信号,从而允许继续执行一个或多个等待线程

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _connectDone.Set();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        ClientSocketPacket client = new ClientSocketPacket();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 完成接受客户端传入的连接的这个异步操作,并返回客户端连入的 socket

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        client.socket = _listener.EndAccept(async);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 将客户端连入的 Socket 放进客户端 Socket 列表

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _clientList.Add(client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        SendData( "一个新的客户端已经成功连入服务器。。。 【信息来自服务端】");

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 开始接收客户端传入的数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                client.socket.beginReceive(client.buffer,client.buffer.Length,SocketFlags.None,new AsyncCallBACk(OnDataReceived),client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         catch (SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 处理异常

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                HandleException(client,eX);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void OnDataReceived(IAsyncResult asynC)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        ClientSocketPacket client = async.AsyncState as ClientSocketPacket;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         int count = 0;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 完成接收数据的这个异步操作,并返回接收的字节数

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 if (client.socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        count = client.socket.EndReceive(async);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         catch (SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                HandleException(client,eX);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 把接收到的数据添加进收到的字节集合内

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 本例采用UTF8编码,中文占用3字节,英文占用1字节,缓冲区为32字节

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 所以如果直接把当前缓冲区转成字符串的话可能会出现乱码,所以要等接收完用户发送的全部信息后再转成字符串

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         foreach ( byte b in client.buffer.Take(count))

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 if (b == 0) conTinue; // 如果是空字节则不做处理

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                client.ReceivedByte.Add(b);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 把当前接收到的数据转换为字符串。用于判断是否包含自定义的结束符

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         String receivedString = UTF8Encoding.UTF8.GetString(client.buffer,count);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 如果该 Socket 在网络缓冲区中没有排队的数据 并且 接收到的数据中有自定义的结束符时

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         if (client.socket.Connected && client.socket.Available == 0 && receivedString.Contains(_endMarker))

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 把收到的字节集合转换成字符串(去掉自定义结束符)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 然后清除掉字节集合中的内容,以准备接收用户发送的下一条信息

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 String content = UTF8Encoding.UTF8.GetString(client.ReceivedByte.ToArray());

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                content = content.replace(_endMarker,"");

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                client.ReceivedByte.Clear();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 发送数据到所有连入的客户端,并在服务端做记录

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                SendData(content);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _syncContext.Post(ResultCallBACk,content);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 继续开始接收客户端传入的数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 if (client.socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        client.socket.beginReceive(client.buffer,client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         catch (SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                HandleException(client,eX);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// <sumMary>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// 发送数据到所有连入的客户端

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// </sumMary>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// <param name="data">需要发送的数据</param>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void SendData( String data)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         byte[] byteData = UTF8Encoding.UTF8.GetBytes(data);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         foreach (ClientSocketPacket client in _clientList)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 if (client.socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                                 // 如果某客户端 Socket 是连接状态,则向其发送数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                                client.socket.beginSend(byteData,byteData.Length,new AsyncCallBACk(OnDataSent),client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                         catch (SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                                HandleException(client,eX);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 else    

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                         // 某 Socket 断开了连接的话则将其关闭,并将其清除出客户端 Socket 列表

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                         // 也就是说每次向所有客户端发送消息的时候,都会从客户端 Socket 集合中清除掉已经关闭了连接的 Socket

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        client.socket.Close();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        _clientList.Remove(client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void OnDataSent(IAsyncResult asynC)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        ClientSocketPacket client = async.AsyncState as ClientSocketPacket;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 完成将信息发送到客户端的这个异步操作

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 if (client.socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        client.socket.EndSend(async);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         catch (SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                HandleException(client,eX);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// <sumMary>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// 处理 SocketException 异常

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// </sumMary>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// <param name="client">导致异常的 ClientSocketPacket</param>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 @H_450_1225@/// <param name="ex">SocketException</param>

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void HandleException(ClientSocketPacket client,SocketException eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 在服务端记录异常信息关闭导致异常的 Socket,并将其清除出客户端 Socket 列表

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _syncContext.Post(ResultCallBACk,client.socket.RemoteEndPoint.ToString() + " - " + ex.messagE);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        client.socket.Close();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _clientList.Remove(client);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void ResultCallBACk( object result)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 输出相关信息

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        txtmsg.Text += result.ToString() + "\r\n";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

}
 
 
3、Socket客户端(聊天室的客户端)
SocketClient.xaml
<UserControl x:Class="Silverlight20.Communication.socketClient"
        xmlns="http://scheR_551_11845@as.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://scheR_551_11845@as.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left" Width="600" Margin="5" BACkground="Gray">

                <ScrollViewer x:Name="scrollChat" Height="400" VerticalScrollBarVisibility="Auto" BACkground="White" Margin="10">
                        <TextBlock x:Name="txtChat" textwrapping="Wrap" />
                </ScrollViewer>

                <StackPanel Orientation="Horizontal" Margin="5">
                        <TextBox x:Name="txtName" Margin="5" Width="100" />
                        <TextBox x:Name="txTinput" Margin="5" Width="400" KeyDown="txTinput_KeyDown" />
                        <Button x:Name="btnSend" Margin="5" Width="60" Content="Send" Click="btnSend_Click"/>
                </StackPanel>

        </StackPanel>
</UserControl>
 
SocketClient.xaml.cs

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Collections.Generic;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Linq;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Net;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Controls;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Documents;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Input;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Media;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Media.Animation;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Windows.Shapes;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Net.sockets;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

using System.Text;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

namespace Silverlight20.Communication

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

{

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

         public partial class SocketClient : UserControl

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 信息结束符,用于判断是否完整地读取了用户发送的信息(要与服务端的信息结束符相对应)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private String _endMarker = "^";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // 客户端 Socket

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private Socket _socket;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 // Socket 异步操作对象

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private socketasynceventargs _sendEventArgs;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 public SocketClient()

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        initializeComponent();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         this.Loaded += new RoutedEventHandler(Page_Loaded);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 void Page_Loaded( object sender,RoutedEventArgs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 初始化姓名和需要发送的文字

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        txtName.Text = "匿名用户" + new Random().Next(0,9999).ToString().PadLeft(4,'0');

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        txTinput.Text = "hi";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 实例化 Socket

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _socket = new Socket(AddressFamily.InterNetwork,ProtocolType.Tcp);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 实例化 socketasynceventargs ,用于对 Socket 做异步操作,很方便

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        socketasynceventargs args = new socketasynceventargs();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 服务器的 EndPoint

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        args.RemoteEndPoint = new DnsEndPoint( "wanglei-pc",4518);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 异步操作完成后执行的事件

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        args.Completed += new EventHandler<socketasynceventargs>(OnSocketConnectCompleted);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 异步连接服务端

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _socket.ConnectAsync(args);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void OnSocketConnectCompleted( object sender,socketasynceventargs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 设置数据缓冲区

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         byte[] response = new byte[1024];

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        e.SetBuffer(response,response.Length);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 修改 socketasynceventargs 对象的异步操作完成后需要执行的事件

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        e.Completed -= new EventHandler<socketasynceventargs>(OnSocketConnectCompleted);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        e.Completed += new EventHandler<socketasynceventargs>(OnSocketReceiveCompleted);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 异步地从服务端 Socket 接收数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _socket.ReceiveAsync(E);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 构造一个 socketasynceventargs 对象,用于用户向服务端发送消息

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _sendEventArgs = new socketasynceventargs();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _sendEventArgs.RemoteEndPoint = e.RemoteEndPoint;

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         String data = "";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         if (!_socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                data = "无法连接到服务器。。。请刷新后再试。。。";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         else

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                data = "成功地连接上了服务器。。。";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        WriteText(data);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void OnSocketReceiveCompleted( object sender,socketasynceventargs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         try

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 将接收到的数据转换为字符串

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 String data = UTF8Encoding.UTF8.GetString(e.buffer,e.offset,e.bytesTransferred);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                WriteText(data);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         catch (Exception eX)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                WriteText(ex.ToString());

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 继续异步地从服务端 Socket 接收数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        _socket.ReceiveAsync(E);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void WriteText( String data)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 在聊天文本框中输出指定的信息,并将滚动条滚到底部

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         this.Dispatcher.beginInvoke(

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 delegate

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        txtChat.Text += data + "\r\n";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        scrollChat.ScrollToVerticalOffset(txtChat.ActualHeight);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        );

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void SendData()

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         if (_socket.Connected)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 设置需要发送的数据的缓冲区

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _sendEventArgs.bufferList =

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                         new List<ArraySegment< byte>>()    

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        {    

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                                 new ArraySegment< byte>(UTF8Encoding.UTF8.GetBytes(txtName.Text + ":" + txTinput.Text + _endMarker))    

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                        };

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                 // 异步地向服务端 Socket 发送消息

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _socket.SendAsync(_sendEventArgs);

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         else

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                txtChat.Text += "无法连接到服务器。。。请刷新后再试。。。\r\n";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                _socket.Close();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        txTinput.Focus();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        txTinput.Text = "";

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void btnSend_Click( object sender,RoutedEventArgs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                        SendData();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室


上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                 private void txTinput_KeyDown( object sender,KeyEventArgs E)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                {

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         // 按了回车键就向服务端发送数据

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                         if (e.Key == Key.Enter)

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                                SendData();

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

                }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

        }

上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室

}
 
 

大佬总结

以上是大佬教程为你收集整理的上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室全部内容,希望文章能够帮你解决上接稳扎稳打Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。