首页 新闻 会员 周边

WebSocket 握手成功,但是发送消息失败

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-11-07 15:07
 1            var socket = ar.AsyncState as Socket;
 2 
 3             //这就是客户端的Socket实例,我们后续可以将其保存起来
 4             var client = socket.EndAccept(ar);
 5 
 6             //判断是否是 webScoket
 7             client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, null, null);
 8             string msg = Encoding.UTF8.GetString(buffer);
 9             if (!msg.Contains("Sec-WebSocket-Key"))
10                 return;
11 
12             client.Send(PackageHandShakeData(buffer, buffer.Length));
13 
14          var timer = new System.Timers.Timer();
15             timer.Interval = 2000D;
16             timer.Enabled = true;
17             timer.Elapsed += (o, a) =>
18             {
19                 //检测客户端Socket的状态
20                 if (client.Connected)
21                 {
22                     try
23                     {
24                         if (client.Poll(10, System.Net.Sockets.SelectMode.SelectWrite))
25                         {
26                             var data = Encoding.Unicode.GetBytes("Message from server at " + DateTime.Now.ToString());
27                             //var data = PackageHandShakeData(buffer, buffer.Length);
28                             client.Send(data, data.Length, SocketFlags.None);
29                         }
30                     }
31                     catch (SocketException ex)
32                     {
33                         Console.WriteLine(ex.Message);
34                     }
35                 }
36                 else
37                 {
38                     timer.Stop();
39                     timer.Enabled = false;
40                     Console.WriteLine("Client is disconnected, the timer is stop.");
41                 }
42             };
43             timer.Start();
44 
45 
46 socket.BeginAccept(new AsyncCallback(ClientMsg), socket);

 

client.Send(PackageHandShakeData(buffer, buffer.Length));

这里已经握手成功了。

但是。
var data = Encoding.Unicode.GetBytes("Message from server at " + DateTime.Now.ToString());
//var data = PackageHandShakeData(buffer, buffer.Length);
client.Send(data, data.Length, SocketFlags.None);
确一直发送失败。

请问 我稍作了哪一步?
CallMeTommy的主页 CallMeTommy | 初学一级 | 园豆:70
提问于:2014-10-04 14:31
< >
分享
所有回答(4)
0

看看这个:

http://blog.csdn.net/ceclar123/article/details/8791972

LiuKaiFa | 园豆:1491 (小虾三级) | 2014-10-04 15:30

通肯定通。 握手都成功了。

支持(0) 反对(1) CallMeTommy | 园豆:70 (初学一级) | 2014-10-04 16:23

@CallMeTommy: 抱歉,不小心点了反对,这不是我的本意

支持(0) 反对(0) 会转圈圈的哆瑞米 | 园豆:200 (初学一级) | 2024-01-02 15:47
0

关注。

519740105 | 园豆:5810 (大侠五级) | 2014-10-04 23:19
0

http://www.blue-zero.com/WebSocket/ 在线WebSocket测试,客户端完美兼容IE6及以上浏览器,服务端采用【C#.NET】异步socket开发,支持多客户同时在线,服务端发送数据长度不限。

阿煌 | 园豆:204 (菜鸟二级) | 2016-03-31 19:00
0

缺少返回给客户端的HTTP请求握手

详细可参考:

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server

http://www.cnblogs.com/dolphinX/p/3462898.html

zlyxm | 园豆:206 (菜鸟二级) | 2017-06-07 12:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册