服务器端代码: namespace Server { public partial class Server2 : Form { delegate void MsgRef(string msg); public Server2() { InitializeComponent(); } AsySocket listener = null; SortedList clients = new SortedList(); delegate void CallBackRef(string msg); private void button1_Click(object sender, EventArgs e) { //监听 listener = new AsySocket(this.textBox1.Text, Int32.Parse(textBox2.Text)); listener.OnAccept += new AcceptEventHandler(listener_OnAccept); listener.Listen(10); this.button1.Enabled = false; } void listener_OnAccept(AsySocket AcceptedSocket) { //注册事件 AcceptedSocket.OnStringDataAccept += new StringDataAcceptHandler (AcceptedSocket_OnStringDataAccept); AcceptedSocket.OnClosed += new AsySocketClosedEventHandler (AcceptedSocket_OnClosed); AcceptedSocket.BeginAcceptData(); //加入 clients.Add(AcceptedSocket.ID, AcceptedSocket); } void AcceptedSocket_OnClosed(string SocketID, string ErrorMessage) { //客户端关闭 clients.Remove(SocketID); } private void AddMsg(string msg) { if (txtMsg.InvokeRequired) { CallBackRef c = new CallBackRef(AddMsgCallBack); this.Invoke(c, new object[] { msg }); } else { txtMsg.Text += Environment.NewLine + msg; } } private void AddMsgCallBack(string msg) { txtMsg.Text += Environment.NewLine + msg; } void AcceptedSocket_OnStringDataAccept(string AccepterID, string AcceptData) { try { //显示 //this.txtMsg.Text += AccepterID + ": " + AcceptData + Environment.NewLine; MsgRef m = new MsgRef(AddMsg); this.Invoke(m, new object[] { AcceptData }); //转发 for (int i = 0; i < clients.Count; i++) { if (clients.Values[i].ID != AccepterID) { clients.Values[i].ASend(AcceptData); } } } catch (Exception e) { MessageBox.Show(e.Message); } } private void btnSend_Click(object sender, EventArgs e) { if (txtSend.Text == "") ...