在VB.net里面,使用TCP套接字可以 让服务器单独发数据给指定客户端吗?

wenluderen 2018-06-30 04:24:12
在VB.net里面,使用TCP套接字可以 让服务器单独发数据给指定客户端吗?

最近学习到这一块了,我原以为服务器可以发数据给某些 或某几个的客户端。

但是目前采集的信息显示, 服务器只能通过广播形式 将数据发送给所有客户端。:


网上有个人写了一个聊天室程序 如下


http://vb.net-informations.com/communications/vb.net_chat_client.htm

***********************
研究一下服务器的代码,服务器为了可以迅速接到客户端的数据,开了一个线程,在线程里面启用了一个监听函数
...全文
383 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2018-07-17
  • 打赏
  • 举报
回复
广播?广播的形成简单的理解为向某一个网段发送信息,而属于那个网段的链接端只要能收到信息的都会读取到数据。
而实际中,广播的实现方法也简单,只要把发送的目标IP地址改为要广播的网段就好了,比如 192.168.1.255,就是
向 192.168.1.1-254 这样一网段进行广播发送。只要是侦听相同端口并属于这个网段的车机器都会收到信息。
但这种方法通常用在UDP上。
先不论你的广播是不是真的广播,即使是真的广播,也可以从数据上进行识别分离呀。
比如你发送的数据头一个字节或两个字节表示机号,那么下面的机子就可以通过这个机号作为自己信息的识别码来判断数据是否是自己的。
当然数据需要设计过成为数据包才可以,比如
&HB2 包头
&H00 机号 &H00 表示广播 &H01-&HFF 表示具体机号
&H01 命令 可以自定义多种参数的使用方法,如普通传输数据为 &H01,登录信息返回为 &H02 等
&H00 命令参数大小高 8 位
&H00 命令参数大小低 8 位 由这两个字节就可以动态决定要传输的参数长度,一次性传输最大支持65535个字节。
... 命令参数 数据
&H?? 数据包校验码 可以用一个字节或两个字节做数据校验,校验方式可以用异或方式
&HB3 包尾
这样就可以通过数据包的机号识别自己是不是要处理收到的数据了

当然,就我估计,你的那个聊天,只不过是套接字列表你没搞清楚而已,也没认真看发送接收过程,拿个代码就想用,
而且还没搞懂原理的就想改,其实看懂了代码,估计要做单独通讯也是很简单的。
threenewbee 2018-06-30
  • 打赏
  • 举报
回复
可以,用tcp长连接。
舉杯邀明月 2018-06-30
  • 打赏
  • 举报
回复
按我的理解:
1. “服务器端”肯定不能主动连接客户端,只能客户端连接服务器端。
2. 在客户端(多个)与服务器端已经连接的情况下,服务器端肯定可以直接发数据给任何其中的一个客户端。
3. 所谓的“广播”,肯定也是服务器端逐个的向所有的、已连接的客户端发数据。
  在“广域网”中,肯定不可能服务器端发一次、让一大批的“客户端”收到数据。
  这种情况,可能只有“在同一网段的局部网”中才会有吧。
  你那个VB.NET的聊天室,估计就是这样(我并没有看那个代码是什么样)。
4. 支持“离线消息”的(比如QQ、微信等),那些“离线消息”肯定得记录在服务器上,
 等到相应的“客户”端上线连接时,赶紧发给它…………

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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