| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2020 人关注过本帖
标题:UDP连接的(端口)问题
只看楼主 加入收藏
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:11 
UDP连接的(端口)问题
在用UDP时 ,需要DatagramSocket 来发送和接收数据报包;
但是如果我定义了DatagramSocket s = new DatagramSocket(8888);
那么8888端口不能再次使用了
而我需要在一台电脑上 登陆不同的用户就要该写 端口 这样就没有实现我要的目的
我要编写的是一个类似 聊天室的 东西
请问 该怎么实现比较好? 谢谢了
搜索更多相关主题的帖子: UDP 端口 
2006-12-29 13:34
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
如果是聊天室的东西,你可以用组播来实现

如果不是一个局域网的,有一个可以避免总用8888的方式,就是做端口映射

也就是说你在一个端口上端口所有的数据包,然后根据这个数据包打开的端口,去和它连起来

可惜不是你,陪我到最后
2006-12-29 13:53
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 
还是有点不明白 ^_^
是这样 : 聊天室里的每个用户都有一个ip 和 端口 这样服务器就能发送给他们数据
但是在不改变Client端代码的情况下; 如果一台电脑上登陆两个用户
这样的话DatagramSocket s = new DatagramSocket(8888); //客户端也有此代码 不是会有问题吗?

就像qq一样 一台电脑上可以登陆几个qq qq程序是怎么实现接受信息的呢??
如果qq自己不开端口而是直连服务器的话 那就是tcp形式了
服务器可以保存Socket 进行通信 是这样吗 ??
udp该怎么办呢??

2006-12-29 14:09
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
所以你客户端不要指定端口就可以了,直接去连服务器端,这个时候,JVM会自动为你分配一个可用的端口的,这样就可以实现一个电脑上上多客户端而又不会出错

可惜不是你,陪我到最后
2006-12-29 14:11
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 
这么说只能用tcp来连了!
谢谢版主
谢谢千里!

2006-12-29 14:17
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不是只能用TCP,你可以用UDP

你在构造UDP的时候不要指定端口就可以了
然后发送数据指定发到一个地方


[CODE]DatagramSocket ds=new DatagramSocket();
byte[] data="login".getBytes();
DatagramPacket dp=new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.58"),8888);
ds.send(dp);[/CODE]

这样就可以了,你可以指定对方的地址和端口号,你没有必要指定发送者用哪个端口发出去

可惜不是你,陪我到最后
2006-12-29 14:28
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 

接收信息呢
比如我这里登陆的多个用户
他们接受也可以不用端口吗 ? 谢谢千里了
帮到底吧 哈哈 麻烦你了哈


2006-12-29 14:50
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你可以用你打开的那个UDP连接来接收信息

一样的道理

只要你不为客户端指定端口就可以了,它可以用DatagramSocket发送信息,那么它也就可以 用这个来接收信息,

发和接都是一个通道,用的是一个端口

可惜不是你,陪我到最后
2006-12-29 15:10
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你可以用你打开的那个UDP连接来接收信息

一样的道理

只要你不为客户端指定端口就可以了,它可以用DatagramSocket发送信息,那么它也就可以 用这个来接收信息,

发和接都是一个通道,用的是一个端口

可惜不是你,陪我到最后
2006-12-29 15:10
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 

是不是和tcp一样啊 tcp的例子我练的还是比较多 udp的很少 !!
DatagramSocket ds=new DatagramSocket(); //这句是由虚拟机指定一个空闲的端口???
这样服务器能提取 客户端的ip 和 端口 就可以了
之后的事情就好办了


2006-12-29 15:23
快速回复:UDP连接的(端口)问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039118 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved