日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

团队项目(四)

發布時間:2025/5/22 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 团队项目(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  由于我們技術方面大牛王以正同學的要求,我們將開發語言改為c#(軟粉的要求啊)。之前的開發工作需要推倒重來T_T。不過程序框架、設計思路大體不變。軟件正式命名為OpenTalk。

  目前用戶端代碼如下:

  

1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Linq; 5 using System.Net; 6 using System.Net.Sockets; 7 using System.Text; 8 9 namespace OpenTalk 10 { 11 class Client 12 { 13 private Socket socket; 14 private SocketAsyncEventArgs receiveEvent; 15 private volatile bool closed = true; 16 private string name; 17 18 public Client() 19 { 20 21 } 22 23 public void Connect(string name, IPAddress address, bool pseudoClient) 24 { 25 this.name = name; 26 SocketAsyncEventArgs e = new SocketAsyncEventArgs(); 27 e.RemoteEndPoint = new IPEndPoint(address, 8880); 28 e.Completed += (sender, args) => 29 { //連接服務器 30 if (args.SocketError == SocketError.Success) 31 { 32 closed = false; 33 MainForm.INSTANCE.PrintInfo("連接成功", ""); 34 if (!pseudoClient) 35 MainForm.INSTANCE.SetClientControls(); 36 socket.Send(Encoding.Default.GetBytes(name)); //發送用戶姓名 37 receiveEvent = new SocketAsyncEventArgs(); 38 receiveEvent.SetBuffer(new byte[1024], 0, 1024); 39 receiveEvent.Completed += ReceiveEventOnCompleted; 40 socket.ReceiveAsync(receiveEvent); 41 } 42 else 43 { 44 MainForm.INSTANCE.PrintInfo("連接失敗", "連接錯誤:" + args.SocketError); 45 MainForm.INSTANCE.FreeControls(); 46 } 47 }; 48 socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); 49 socket.ConnectAsync(e); 50 } 51 52 //處理接受到的服務器信息 53 private void ReceiveEventOnCompleted(object sender, SocketAsyncEventArgs socketAsyncEventArgs) 54 { 55 if (socketAsyncEventArgs.BytesTransferred > 0) 56 { 57 byte[] info = socketAsyncEventArgs.Buffer; 58 string s = Encoding.Default.GetString(info, 1, info.Length - 1); 59 switch (info[0]) 60 { 61 case 0: //如果是聊天信息 62 string sdr = s.Substring(0, s.IndexOf(':')); 63 string message = s.Substring(s.IndexOf(':') + 1); 64 MainForm.INSTANCE.PrintInfo(sdr, message, 65 sdr.Equals(name) ? Color.Green : Color.Blue); 66 break; 67 case 1: //如果是用戶列表 68 string[] users = s.Split(new char[] {':'}, StringSplitOptions.RemoveEmptyEntries); 69 MainForm.INSTANCE.ShowUsers(users); 70 break; 71 } 72 Array.Clear(socketAsyncEventArgs.Buffer, 0, socketAsyncEventArgs.Buffer.Length); 73 socket.ReceiveAsync(receiveEvent); 74 } 75 else 76 { 77 if (!closed) 78 { 79 closed = true; 80 MainForm.INSTANCE.PrintInfo("遠端主機已關閉", ""); 81 } 82 socket.Close(); 83 MainForm.INSTANCE.FreeControls(); 84 } 85 } 86 87 public void Send(string s) 88 { 89 var sendEvent = new SocketAsyncEventArgs(); 90 if (s.Length == 0) 91 s = " "; 92 byte[] info = Encoding.Default.GetBytes(s); 93 sendEvent.SetBuffer(info, 0, info.Length); 94 socket.SendAsync(sendEvent); 95 } 96 97 public void Disconnect() 98 { 99 if (!closed) 100 { 101 closed = true; 102 MainForm.INSTANCE.PrintInfo("已同主機斷開連接", ""); 103 } 104 socket.Send(new byte[] {0}); 105 socket.Close(); 106 MainForm.INSTANCE.FreeControls(); 107 } 108 } 109 }

?

轉載于:https://www.cnblogs.com/bjut13070017/p/5602229.html

總結

以上是生活随笔為你收集整理的团队项目(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。