Socket 和 WebSocket 如何通信?

???518 2015-07-28 08:25:06
本人在做在线聊天系统,多服务器,多客户端,多客服端。计划客户端用WebSocket,客服端用Socket(因为有好多功能需要WinForm 实现比如:截图)。
客户端和客服端怎么通信呢?WebSocket服务端用Socket 和客服端的Socket服务器通信,然后Socket服务器推送给客服端么?
也就是Socket 和 WebSocket 如何通信?多谢!
...全文
5955 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzd24 2015-08-04
  • 打赏
  • 举报
回复
引用 7 楼 diaodiaop 的回复:
socket本身就是tcp/ip+udp的玩意 websocket不过是跑在web上面的tcp/ip协议而已啊... [quote=引用 2 楼 wzd24 的回复:] TcpListener可没有使用Windows的IOCP,TcpListener是为小规模并发通讯而设计的,大规模并发的通讯还是需要Socket来处理。而且和TcpListener对应的TcpClient因为强制使用流来处理数据的收发,效率比较低。
按照您的意思 TcpListener跟socket是不同的东西了.. 也就是 如果我用socket监听 那么我必须用socket客户端而不能用TcpClient? 相反 如果我用了TcpListener来监听 我客户端必须用TcpClient而不能用socket是这个意思吗?[/quote] TcpListener及TcpClient是微软对Socket的再封装的产物,目的是快速开发TCP通讯。
showjim 2015-07-29
  • 打赏
  • 举报
回复
需要实现WebSocket相关协议,或者使用实现了WebSocket协议的组件
jy251 2015-07-29
  • 打赏
  • 举报
回复
socket库更新过了,至少在vs2010里面,使用async的函数就是iocp
???518 2015-07-29
  • 打赏
  • 举报
回复
就是在服务器端,WebSocket和Socket服务再通过 Socket 实现通讯喽,WebSocket服务相当于一个客服端吧?我也是这么想的。谢谢!
引用 2 楼 wzd24 的回复:
你这个是典型的服务器中转通讯的场景,你可以在服务器上同时开放WebSocket和Socket。客户端连接服务器的WebSocket,客服端连接服务器的Socket,接下来你应该知道怎么做了吧? 类似这样:客户端--WebSocket--》服务器《--Socket--客服端。 PS:楼上,TcpListener可没有使用Windows的IOCP,TcpListener是为小规模并发通讯而设计的,大规模并发的通讯还是需要Socket来处理。而且和TcpListener对应的TcpClient因为强制使用流来处理数据的收发,效率比较低。
卧_槽 2015-07-29
  • 打赏
  • 举报
回复
不是应用p2p么?
by_封爱 版主 2015-07-29
  • 打赏
  • 举报
回复
引用
类似这样:客户端--WebSocket--》服务器《--Socket--客服端。
这个东西到底是什么玩意 我从你这个流程图中完全看不到. 另外LZ你是做CS还是做BS? 如果是CS你谈什么websocket呢? 如果是BS还谈什么socket呢? 好吧就算你又有CS又有BS..那你在服务器监听一个端口 (tcp/ip) 就行了 至于你是CS连接 BS连接 或者是socket连接或者是tcpclient都可以啊..无非就是请求的协议不一样而已. 难道你看到别人WebQQ在线中,他非得给WebQQ单独做一个服务? 所以我觉得LZ要研究下 socket是什么 怎么用 websocket是干啥的 他们之间有什么关系 有什么不同.. 而不是上来就为 怎么怎么做.....
by_封爱 版主 2015-07-29
  • 打赏
  • 举报
回复
socket本身就是tcp/ip+udp的玩意 websocket不过是跑在web上面的tcp/ip协议而已啊...
引用 2 楼 wzd24 的回复:
TcpListener可没有使用Windows的IOCP,TcpListener是为小规模并发通讯而设计的,大规模并发的通讯还是需要Socket来处理。而且和TcpListener对应的TcpClient因为强制使用流来处理数据的收发,效率比较低。
按照您的意思 TcpListener跟socket是不同的东西了.. 也就是 如果我用socket监听 那么我必须用socket客户端而不能用TcpClient? 相反 如果我用了TcpListener来监听 我客户端必须用TcpClient而不能用socket是这个意思吗?
wzd24 2015-07-28
  • 打赏
  • 举报
回复
你这个是典型的服务器中转通讯的场景,你可以在服务器上同时开放WebSocket和Socket。客户端连接服务器的WebSocket,客服端连接服务器的Socket,接下来你应该知道怎么做了吧? 类似这样:客户端--WebSocket--》服务器《--Socket--客服端。 PS:楼上,TcpListener可没有使用Windows的IOCP,TcpListener是为小规模并发通讯而设计的,大规模并发的通讯还是需要Socket来处理。而且和TcpListener对应的TcpClient因为强制使用流来处理数据的收发,效率比较低。
  • 打赏
  • 举报
回复
你的不同的 WebSocket 客户端如何把消息给另一个客户端的,那么自然,通过所谓的 Socket 客户端也同样传送消息。 如果你不懂这个意思,那么就先把你自己的WebWocket服务器端如何处理两个客户端聊天的流程写出来,在这个基础上再说。如果看不出你的这个基础是如何设计那,那就无法设计所谓socket与websocket客户端之间的沟通了。 另外要说明一下,在windows上,要使用TcpListener,因为它集成了IOCP。不要使用Socket类。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧