c# WebSocket 服务器与客户端通讯

1、下载WebScoket 服务器类库Fleck.dll 与客户端类库websocket-sharp.dll :  https://pan.baidu.com/s/1o9jU22e

2、WebSocket 服务器代码:

 1   List<IWebSocketConnection> allSockets;
 2         public void Func()
 3         {
 4             try
 5             {
 6                 FleckLog.Level = LogLevel.Debug;
 7                 allSockets = new List<IWebSocketConnection>();
 8 
 9                 var server = new WebSocketServer("ws://0.0.0.0:9999");
10 
11                 server.Start(socket =>
12                 {
13                     socket.OnOpen = () =>
14                     {
15                         allSockets.Add(socket);
16                     };
17 
18                     socket.OnClose = () =>
19                     {
20 
21                         allSockets.Remove(socket);
22                     };
23 
24                     socket.OnMessage = message =>
25                     {
26                         //显示接收的客户端信息
27                         txt_receive.Text += message + "\r\n";
28 
29                         //发送信息给客户端
30                        allSockets.ToList().ForEach(s => s.Send("test"));
31 
32                     };
33                 });
34             }
35 
36             catch (Exception e)
37             {
38                 MessageBox.Show("服务器开启失败!\r\n" + e.ToString());
39 
40             }
41 
42         }

3、WebSocket 客户端代码:

 1  WebSocket ws;
 2  bool isConnected;
 3         
 4         public void Connect()
 5         {
 6             try
 7             {
 8                 if (isConnected == false)
 9                 {
10                     ws = new WebSocket("ws://localhost:9999");
11                     ws.OnOpen += ws_OnOpen;
12                     ws.OnMessage += ws_OnMessage;
13                     ws.OnClose += ws_OnClose;
14                     ws.Connect();
15                 }
16             }
17             catch (Exception ex)
18             {
19             }
20         }
21 
22         void ws_OnOpen(object sender, EventArgs e)
23         {
24             SetTextBoxText(textBox1, "已连接服务器" + "\r\n");
25             isConnected = true;
26 
27         }
28         void ws_OnClose(object sender, CloseEventArgs e)
29         {
30             SetTextBoxText(textBox1, "服务器已断开" + "\r\n");
31             isConnected = false;
32         }
33 
34         void ws_OnMessage(object sender, MessageEventArgs e)
35         {
36             try
37             {
38                 string message = e.Data;
39 
40                 //显示接收的服务器信息
41                 SetTextBoxText(textBox1, message);
42 
43                 //给服务器发送信息
44                 ws.Send("Hello World!");
45 
46 
47             }
48 
49             catch (Exception ex)
50             {
51             }
52         }
53 
54 
55 
56         public delegate void DelSetTextBoxText(TextBox txtBox, string str);
57         public void SetTextBoxText(TextBox txtBox, string str)
58         {
59             if (txtBox.InvokeRequired)
60             {
61                 DelSetTextBoxText del = new DelSetTextBoxText(SetTextBoxText);
62                 this.Invoke(del, new object[] { txtBox, str });
63             }
64             else
65             {
66                 txtBox.Text += str + "\r\n";
67             }
68         }

 

 

posted @ 2018-03-02 10:18  BaoMingZhu  阅读(698)  评论(0编辑  收藏  举报