黑马程序员技术交流社区
标题:
网络编程求解惑
[打印本页]
作者:
王飞
时间:
2012-7-17 10:25
标题:
网络编程求解惑
本帖最后由 王飞 于 2012-7-17 11:55 编辑
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class aa {
public static void main(String[] args)throws Exception {
//1.创建udp服务
DatagramSocket ds = new DatagramSocket();
//2.确定数据,并封装成数据包
// byte[] buf = "ni hao a".getBytes();
//DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.101"),11);
此处为什么要封装包?我不封装直接读取岂不方便。
我不封装包不行吗 往流中直接写入字节数据 ds.send("行不行啊".getBytes());不是更方便吗?本人认为为何要多此一举呢。。。
有点不解
//3.通过Socket服务讲数据发送出去
// ds.send(dp);
//4.关闭资源
ds.close();
}
}
class UDP2 {
public static void main(String[] args)throws Exception {
//1.创建sockect服务,建立端点
DatagramSocket ds = new DatagramSocket(11);
//2.建立数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
上面如果不定义包,而是直接把客户端传送过来的数据直接全部读取接收不行吗?这不是更方便,省去了装包的麻烦
并且把数据都装进包里还站内存,
然后需要什么直接从流中读取多方便
//3.通过服务的receive方法讲数据存入包中
ds.receive(dp);
//4.通过数据包获取数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println("ip:"+ip+"------"+"data:"+data);
//5.关闭资源
ds.close();
}
}
作者:
rslheima
时间:
2012-7-17 10:59
为什么使用DatagramPackage ?
那你得先好好了解以下UDP的特点,在复习下网络原理,在网络中数据都是以数据包的形式传送的,并且数据包是有一定格式的,有包头啦什么的,
源ip,目的ip,数据。。。使用DatagramPackage 无非就是封装这些信息。
下面是API的介绍:
DatagramPackage
数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。
作者:
孙新强
时间:
2012-7-17 11:05
关于udp协议的网络编程 他是面向无连接的 是没有方向的 所以不能将数据写入流中传输
而是必须将数据通过DatagramSocket封装处理 让后把数据包投递出去
可以对比一下 tcp协议的网络编程 是面向连接的 在tcp中 首先建立socket服务 然后进行io流操作
具体说明:
UDP是没有“方向”的,所以用DatagramePacket既发送数据,又接收数据。但是TCP是有“方向”的连接,因此用两个类Socket 、ServerSocket分别表示客户端和服务器端, TCP先形成Socket的“通路”,然后再通过IO流在这条通路上进行数据的传输。即ServerSocket先接收到客户端的Socket,然后调用此Socket中的IO流实现数据的流传输。
作者:
黑马陈旭东
时间:
2012-7-17 11:17
首先UDP楼主把它想成在邮局寄包裹。
UDP的机制首先它是不用先建立连接的!所以你把它投递出去之后,包裹本身就是一个对象。
对方接收到了包裹,发送方跟接收方有联系吗?没有!
所以最后的依据只有包裹本身。这不是麻烦不麻烦的问题。而是安全隐患的问题!
作者:
王飞
时间:
2012-7-17 11:55
哦哦 明白了
诸位 谢了{:soso_e183:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2