当前位置: 代码迷 >> Java相关 >> UDP连接的(端口)问题
  详细解决方案

UDP连接的(端口)问题

热度:793   发布时间:2006-12-29 13:34:04.0
UDP连接的(端口)问题
在用UDP时 ,需要DatagramSocket 来发送和接收数据报包;
但是如果我定义了DatagramSocket s = new DatagramSocket(8888);
那么8888端口不能再次使用了
而我需要在一台电脑上 登陆不同的用户就要该写 端口 这样就没有实现我要的目的
我要编写的是一个类似 聊天室的 东西
请问 该怎么实现比较好? 谢谢了
搜索更多相关的解决方案: UDP  端口  

----------------解决方案--------------------------------------------------------
如果是聊天室的东西,你可以用组播来实现

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

也就是说你在一个端口上端口所有的数据包,然后根据这个数据包打开的端口,去和它连起来
----------------解决方案--------------------------------------------------------
还是有点不明白 ^_^
是这样 : 聊天室里的每个用户都有一个ip 和 端口 这样服务器就能发送给他们数据
但是在不改变Client端代码的情况下; 如果一台电脑上登陆两个用户
这样的话DatagramSocket s = new DatagramSocket(8888); //客户端也有此代码 不是会有问题吗?

就像qq一样 一台电脑上可以登陆几个qq qq程序是怎么实现接受信息的呢??
如果qq自己不开端口而是直连服务器的话 那就是tcp形式了
服务器可以保存Socket 进行通信 是这样吗 ??
udp该怎么办呢??
----------------解决方案--------------------------------------------------------
所以你客户端不要指定端口就可以了,直接去连服务器端,这个时候,JVM会自动为你分配一个可用的端口的,这样就可以实现一个电脑上上多客户端而又不会出错
----------------解决方案--------------------------------------------------------
这么说只能用tcp来连了!
谢谢版主
谢谢千里!
----------------解决方案--------------------------------------------------------
不是只能用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]

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

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
你可以用你打开的那个UDP连接来接收信息

一样的道理

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

发和接都是一个通道,用的是一个端口
----------------解决方案--------------------------------------------------------
你可以用你打开的那个UDP连接来接收信息

一样的道理

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

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

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
  相关解决方案