当前位置:编程学习 > wap >>

UDP发送数据时源端口绑定的问题

我用手机端用 socketReceiveUDP = new DatagramSocket(9002)来绑定本地端口,然后发送数据,接收数据的机子上接收到手机发来的数据,,从datagramPacket.getSocketAddress()方法得到的端口却不是我绑定的端口9002,怎么回事??而是一个随机分配的端口,每次都不一样。在局域网内可以互通数据,在外网内,却不能互通数据了。 UDP --------------------编程问答-------------------- 怎样固定UDP的源端口号呢?? --------------------编程问答-------------------- 出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了 --------------------编程问答--------------------
引用 2 楼 wjw2066616 的回复:
出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、 --------------------编程问答--------------------
引用 3 楼 yumeiqiao 的回复:
Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。 --------------------编程问答--------------------
引用 4 楼 wjw2066616 的回复:
Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的 --------------------编程问答--------------------
引用 5 楼 yumeiqiao 的回复:
Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port); --------------------编程问答--------------------
引用 4 楼 wjw2066616 的回复:
Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
SocketAddress sokectadress = new InetSocketAddress(InetAddress.getByName(localip),9002);
System.out.println("socketadress"+sokectadress);
socketReceiveUDP.bind(sokectadress);

绑定了,,,DatagramPacket.getSocketAddress,用这个方法得到源地址和源端口  192.168.0.181:53921,,这是在局域网,端口号是随机的 --------------------编程问答--------------------
引用 6 楼 wjw2066616 的回复:
Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的 --------------------编程问答--------------------
引用 8 楼 yumeiqiao 的回复:
Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的


引用 8 楼 yumeiqiao 的回复:
Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的

你在局域网里端口号也不是固定的么,获得的IP是手机上显示的IP还是路由器的IP,如果局域网里也不是固定的话而且IP是路由器IP的话,那么应该是局域网里有多个移动端用同一个端口的原因,外网的话应该是与路由有关,但是应该不影响你收发消息才对 --------------------编程问答--------------------
引用 9 楼 wjw2066616 的回复:
Quote: 引用 8 楼 yumeiqiao 的回复:

Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的


引用 8 楼 yumeiqiao 的回复:
Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的

你在局域网里端口号也不是固定的么,获得的IP是手机上显示的IP还是路由器的IP,如果局域网里也不是固定的话而且IP是路由器IP的话,那么应该是局域网里有多个移动端用同一个端口的原因,外网的话应该是与路由有关,但是应该不影响你收发消息才对
  我可以加您QQ吗  我的QQ1730041563,,我就是不用路由器转换,也是一样的随机的  我用模拟器发送的话,,还是随机的  ,,用手机发的话,就我一台移动端在用。 --------------------编程问答--------------------
引用 10 楼 yumeiqiao 的回复:
Quote: 引用 9 楼 wjw2066616 的回复:

Quote: 引用 8 楼 yumeiqiao 的回复:

Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的


引用 8 楼 yumeiqiao 的回复:
Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的

你在局域网里端口号也不是固定的么,获得的IP是手机上显示的IP还是路由器的IP,如果局域网里也不是固定的话而且IP是路由器IP的话,那么应该是局域网里有多个移动端用同一个端口的原因,外网的话应该是与路由有关,但是应该不影响你收发消息才对
  我可以加您QQ吗  我的QQ1730041563,,我就是不用路由器转换,也是一样的随机的  我用模拟器发送的话,,还是随机的  ,,用手机发的话,就我一台移动端在用。

那你写个测试看看,只写一个Socket然后发个消息过去 ,那边接受看端口号是不是固定的,PS:接受端最好也重新写一个,只接受然后就显示,看会不会是你程序的问题
--------------------编程问答--------------------
引用 11 楼 wjw2066616 的回复:
Quote: 引用 10 楼 yumeiqiao 的回复:

Quote: 引用 9 楼 wjw2066616 的回复:

Quote: 引用 8 楼 yumeiqiao 的回复:

Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的


引用 8 楼 yumeiqiao 的回复:
Quote: 引用 6 楼 wjw2066616 的回复:

Quote: 引用 5 楼 yumeiqiao 的回复:

Quote: 引用 4 楼 wjw2066616 的回复:

Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
是的  我用GPRS的话,用的是连接外网的ip。并且做了映射,,麻烦问下 这个源端口怎么固定啊?我用bind绑定,在接收端得到的ip是对的,端口还是不对,,是随机分配的

在你新建Socket的时候附上端口号
Socket=new DatagramSocket(port);
这个方法也试了  得到的端口还是不是固定的

你在局域网里端口号也不是固定的么,获得的IP是手机上显示的IP还是路由器的IP,如果局域网里也不是固定的话而且IP是路由器IP的话,那么应该是局域网里有多个移动端用同一个端口的原因,外网的话应该是与路由有关,但是应该不影响你收发消息才对
  我可以加您QQ吗  我的QQ1730041563,,我就是不用路由器转换,也是一样的随机的  我用模拟器发送的话,,还是随机的  ,,用手机发的话,就我一台移动端在用。

那你写个测试看看,只写一个Socket然后发个消息过去 ,那边接受看端口号是不是固定的,PS:接受端最好也重新写一个,只接受然后就显示,看会不会是你程序的问题
     测试了  如果是同一电脑不同端口之间通信,是可以的,端口是固定的正确的,,,,,但是如果是android程序,手机发送,电脑接收,源端口就是不固定的  同一段程序,,,这是咋回事呢  好纠结 --------------------编程问答-------------------- 那应该是无线路由的设置原因 --------------------编程问答--------------------
引用 13 楼 wjw2066616 的回复:
那应该是无线路由的设置原因
我想问下 路由器具体要怎么设置呢   我在局域网内可以互通数据,,,手机用GPRS向电脑发数据,电脑可以接收到,根据datagrampacket接收得到的ip和port,回发不回去 --------------------编程问答--------------------
引用 14 楼 yumeiqiao 的回复:
Quote: 引用 13 楼 wjw2066616 的回复:

那应该是无线路由的设置原因
我想问下 路由器具体要怎么设置呢   我在局域网内可以互通数据,,,手机用GPRS向电脑发数据,电脑可以接收到,根据datagrampacket接收得到的ip和port,回发不回去


引用 14 楼 yumeiqiao 的回复:
Quote: 引用 13 楼 wjw2066616 的回复:

那应该是无线路由的设置原因
我想问下 路由器具体要怎么设置呢   我在局域网内可以互通数据,,,手机用GPRS向电脑发数据,电脑可以接收到,根据datagrampacket接收得到的ip和port,回发不回去

手机用GPRS通信的话,就跟移动公司有关,具体的我也没弄过不清楚 --------------------编程问答--------------------
引用 4 楼 wjw2066616 的回复:
Quote: 引用 3 楼 yumeiqiao 的回复:

Quote: 引用 2 楼 wjw2066616 的回复:

出外网是要通过路由器的。你外网收到的ip 和端口号 与你的路由器映射有关
其实 只要外网能收到你手机发送的消息 并获得ip 与端口号 并按照这个ip与端口号发送返回消息 手机就可以收到。。PS我只试过通过一个路由的情况 多个路由转发情况就不清除了
    我在局域网内是手机和电脑之间能够互通消息,,用GPRS却不可以了 。。然后我想问下 可以固定源端口吗?我查了半天找不到。、

端口是可以固定的,但是如果你的手机用的是GPRS,而你的电脑是在一个局域网内,那么你手机发送的目的IP地址就能是你电脑的局域网IP,需要你把电脑直接连接到外网,或者改变路由器的映射。
请问端口号怎样固定?
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,