目前对于我这种刚接触网络编程的豆芽来说,对网络编程最直观的了解就是:一些的Client和一个Server端之间的数据传递。具体当然是复杂的,但是那是我以后要学的。
今天我知道了可以通过Socket和DatagramSocket两种套接字来进行Client和Server的链接,它们分别对应于TCP和UDP协议
DatagramPacket类:
DatagramPacket类是数据报包。
数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。我觉得这个是比较复杂抽象的理解,我个人就简单的理解为一个装了字节Buffer的包裹,包裹的上面写了收信人的地址和姓名等信息(具体的就是端口号,IP,等等)。
DatagramSocket类通过receive和send方法进行收发数据报包,也就是收发DatagramPacket类的具体对象,从而实现Client和Server。之间的数据传送。
Socket类:
Socket套接字是对应与TCP协议的。除了TCP与UDP协议的不同带来Socket与DatagramPacket的不同外。在传送数据的途径上Socket是通过InputStream和OutputStream两个流。比如:
Socket socket = new Socket("cuishen.iteye.com",80); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream();
这三句相当于在Client和Server之间连接了两个管子,一个流入,一个流出。
我今天是第一次接触网络编程这个概念,所以理解的都是表面的东西。但好歹是个好的开始。如有不对的请多指教。