可以使用UDP协议从服务器发送数据到客户端吗?

force2004 2008-03-09 05:04:10
可以使用UDP协议从服务器发送数据到客户端吗?

UDP协议是面向无链接的,在发送数据的时候,需要指定接收方的ip地址和端口号。
服务器端有公网IP,所以从客户端向服务器端发送UDP协议数据包,服务器端能收到。
如果客户端是内网用户,服务器端能使用UDP协议发送数据给客户端吗?

本人初学网络编程,请指教。
...全文
1173 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huang_yu_qiang 2008-03-09
  • 打赏
  • 举报
回复
这和udp,tcp没什么关系啊,不管以什么方式,都必须是客户端主动建立到服务器的连接,然后服务器才能在这个连接上发送
scq2099yt 2008-03-09
  • 打赏
  • 举报
回复
不可以,虽然服务器能知道客户端的地址信息,但是由于是内网所以需要解决路由的问题
野男孩 2008-03-09
  • 打赏
  • 举报
回复
服务端想主动发给内网怕是不能了。
china_bai 2008-03-09
  • 打赏
  • 举报
回复
完全可以。

如果客户端的IP是实现知道的,比如通过配置文件啥的可以读入,则服务器端可以直接
通过UDP,根据客户端的IP和端口号,发送数据给他们。

如果客户端的IP是动态的,则客户端首先发送个数据包给服务器,注册一下自己的IP,然后
服务器端就可以根据记录到的IP发送UDP包。

另外,犹豫UDP是无连接协议,因此lz在设计程序时,最好确保每个数据包接收到后,接收方都能
够回送一个响应,确保数据不丢失。 如果数据丢失,则进行重发。
mr.zhoux 2008-03-09
  • 打赏
  • 举报
回复
可以,但必须由客户端先sendto信息到服务器,然后再由服务器在一定时间内的返回,维持session.
force2004 2008-03-09
  • 打赏
  • 举报
回复
谢谢上面的几位!

期待更具体一些的答案!
paerxiushi 2008-03-09
  • 打赏
  • 举报
回复
客户端使用Udp时,只需要在创建套接字后,使用sendto方法,此后,客户端程序会自动地绑定到新创建的套接字,但是如果直接使用recvfrom的话,就会报错,因为套接字未被绑定。
paerxiushi 2008-03-09
  • 打赏
  • 举报
回复
内网服务端可以用Udp发数据给客户端
cnzdgs 2008-03-09
  • 打赏
  • 举报
回复
LZ可以从网上搜一下NAT方面的资料大致了解一下。
arong1234 2008-03-09
  • 打赏
  • 举报
回复
必须是客户端首先发送消息,一旦发送一次后,防火墙上会给这个客户端准备一个特别的通道,此时服务器就可以回信息给它了。QQ就是这么做的。
force2004 2008-03-09
  • 打赏
  • 举报
回复
自己顶一下!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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