java如何指定出端口?
Java code
public void activeSend(SocketAddress addr, byte[] data) throws Exception {
DatagramPacket pack = new DatagramPacket(data, data.length, addr);
activeDatagramSocket.send(pack);
System.out.println("use active send");
}
如果这样发送的话 最终会从本地的一个 默认端口(操作系统帮你指定一个出端口) 出去到达对方IP
但我现在要指定端口,必须从3030出去.
也就是如果要写一个p2p打洞程序的必须操作: 指定确切的可行方向上的 '洞'
java如何指定出端口?
------解决方案--------------------SocketAddress是一个抽象类。
public class InetSocketAddress extends SocketAddress
InetSocketAddress 继承了SocketAddress。
InetSocketAddress(InetAddress addr, int port) 构造函数就可以指定端口。
------解决方案--------------------好厉害, lz写好程序后给我看看, 我也在学习呢
------解决方案--------------------UDP?
获得这个activeDatagramSocket的时候用下面的构造方法:
DatagramSocket(int port)
创建数据报套接字并将其绑定到本地主机上的指定端口。
------解决方案--------------------用这个连服务器:
Socket(String host, int port, InetAddress localAddr, int localPort)
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------冷静!别动气,气大伤肝啊!大家都仔细看看对方的回复!
------解决方案--------------------搬凳子看看
------解决方案--------------------
------解决方案--------------------用Socket套接字制定端口
ServerSocket
------解决方案--------------------DatagramPacket pack = new DatagramPacket(data, data.length, addr);
activeDatagramSocket.send(pack);
System.out.println("use active send");
DatagramPacket是无法直接绑定本地IP和端口的。
DatagramPacket的数据是通过DatagramSocket.send出去的。
要绑定本地的端口和IP只需要调用。
activeDatagramSocket.bind(SocketAddress addr);
这里的SocketAddress就是我1楼的回复。
顺便在发一个JAVADOC给你。
JDK6 JavaDoc:http://download.csdn.net/detail/fainfy/3689670
JDK7 JavaDoc: http://download.csdn.net/detail/fainfy/3605021
顺便我的回复是按照楼主的代码来回复的,我认为没有问题,只是你没有明白而已。
如果提问者是一个有心人,我会直接贴上可用的代码。
------解决方案--------------------
------解决方案--------------------