黑马程序员技术交流社区
标题:
关于Socket编程端口的问题
[打印本页]
作者:
cyh8807
时间:
2013-2-3 16:21
标题:
关于Socket编程端口的问题
本帖最后由 张向辉 于 2013-2-5 12:30 编辑
import java.net.*;
import java.io.*;
class UdpSend2
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket();
BufferedReader bfr = new
BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=bfr.readLine())!=null)
{
if("88".equals(line))
break;
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("localHost"),10000);
ds.send(dp);
}
ds.close();
}
}
class UdpReceive2
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(10001);
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println(ip + "::" + data);
}
}
}
复制代码
我们知道端口是对网络应用程序进行的数字标识,上述程序中监听端DatagramSocket ds = new DatagramSocket(10001);所指定的端口为什么必须和
发送端所使用的端口一致才可以监听到数据呢?在监听端使用哪一个端口来监听可以作为广播,监听到发送端所有端口发送的数据
或者说把DatagramSocket ds = new DatagramSocket(10001);如何修改可以监听发送端所有端口发送的数据
作者:
陈科宇
时间:
2013-2-3 16:29
呵呵。这个其实很容易理解,一个数据包发送到你的电脑后,如果数据里只包含了IP信息,那么数据根本就不知道该发给哪个应用程序。有了端口就不一样了。只要传送之前商量好端口,那么数据就会被指定的端口的应用程序接收,从而保证信息传输的正确性。
作者:
陈科宇
时间:
2013-2-3 16:33
例如你的电脑收到了8080端口的数据包,这就很明显了噻。数据是发给你目前正浏览的网页浏览器的。然后你的网页浏览器就会及时处理这些数据,你也就会看到网页的更新。而这个数据如果错误地发给了你的QQ,你是不是会觉得有点扯淡呢。端口,就是为了帮助数据到达指定位置。
作者:
铿锵科技
时间:
2013-2-3 20:55
我们知道端口是对网络应用程序进行的数字标识,上述程序中监听端DatagramSocket ds = new DatagramSocket(10001);所指定的端口为什么必须和
发送端所使用的端口一致才可以监听到数据呢?在监听端使用哪一个端口来监听可以作为广播,监听到发送端所有端口发送的数据
或者说把DatagramSocket ds = new DatagramSocket(10001);如何修改可以监听发送端所有端口发送的数据
端口广播没听过,地址广播是255.255.255.255,监听到发送端所有端口发送的数据,就是监听所有端口
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2