java基于udp的聊天程序(多客户端对应一服务端)

DalaoQWQ 2018-03-12 05:29:40
有些代码不理解,求各位大佬们帮帮忙。部分代码如下:
客户端:


服务端:



创建多个客户端,DatagramSocket():并绑定本地地址和一个随机的端口号。即每个客户端的IP地址都是相同,服务端用getSocketAddress();从接受到的数据报中获取客户端的IP地址,加入动态数组clients.add(clientip);最终通过for(SocketAddress sa : clients)发送给客户端。
为什么客户端的IP地址都一样,端口随机,服务端还能准确的发给每个客户端?
...全文
697 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ebbbbbby 2019-04-15
  • 打赏
  • 举报
回复
有没有全部源码啊?
疯一样的男子 2018-03-13
  • 打赏
  • 举报
回复
首先你要明白 192.168.0.100:1001 和 192.168.0.100:1002 是两个不同的套接字。 应用层的网络通讯靠的是IP+端口,不是单纯的IP。 举个例子,服务器比作一栋楼,端口类似门牌号,公司比作服务或者应用程序。 一栋楼可以有多个公司,每个公司对应不同的门牌号。写字楼的地址+公司门牌号构成这个公司的唯一地址。 这个地址你会认错吗?
DalaoQWQ 2018-03-13
  • 打赏
  • 举报
回复
ok,问题解决了
DalaoQWQ 2018-03-13
  • 打赏
  • 举报
回复
假设创建3个客户,服务端的动态数组中的3个值(socketAddress)一样吗?
爱摸鱼de老邪 2018-03-12
  • 打赏
  • 举报
回复
IP地址:端口构成套接字,应用进程之间通信就是靠这个地址来区分数据是发给哪个应用进程的。看看TCP/IP相关的内容 就明白了。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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