首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师-java网络编程

2012-11-21 
黑马程序员-java网络编程----------------------android培训、java培训、java学习型技术博客、期待与您交流!-

黑马程序员-java网络编程

----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------

?

????? Java网络编程(即所谓的socket编程),在通信的2个端点之间都有socket,数据就是在这2个socket之间通过IO进行传输的,网络模型主要有:1.OSI参考模型(应用层->表示层->会话层->传输层->网络层->数据链路层->物理层),2.TCP/IP参考模型(应用层->传输层->网际层->主机至网络层)

????? 网络的通讯要素有:1.IP地址? 2.端口号?? 3.传输协议,这里主要说一下传输协议,协议主要分为2大类(UDP和TCP),它们都是互联网的传输协议,而不同之处主要表现在数据的安全性和完整性方面:

???? ?UDP协议是面向无连接的协议,同TCP协议相比是一个不安全的数据传输协议。UDP数据包中的验证信息要比TCP协议少的多。所以对数据安全性和完整性的验证就没有TCP协议安全了,相对TCP的大数据量传输,UDP的每个数据包限制在64k内,因为是不可靠的协议,故不需要建立连接,所以速度较快。

????? TCP协议是面向连接的协议,所以是一个安全的数据传输协议,当在校验的过程中发现数据传输错误的话,会立即进行数据的重传,以保证数据的正确性和完整性,是个安全的数据传输协议,此外TCP可以进行大数据量的传输,因为是可靠协议,故必须建立连接,所以在效率方面相对UDP而言会稍低些。

?????

????? 通过UDP协议进行简单的网络传输:

????? 发送端的代码

?????

import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class UdpSend {public static void main(String[] args) throws Exception {// 1.创建udp服务,通过DatagramScoket对象DatagramSocket ds = new DatagramSocket();// 2.确定数据,并封装成数据包,DatagramPacket(byte[] buf, int length, InetAddress// address, int port)byte[] buf = "以udp形式发送的数据".getBytes();DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10000);// 3.通过socket服务,将已有的数据包发送出去,通过send方法ds.send(dp);// 4.关闭资源ds.close();}}

?

???? 接收端代码

?

import java.net.DatagramPacket;import java.net.DatagramSocket;public class UdpReceive {public static void main(String[] args) throws Exception {// 1.创建udp socket,建立端口DatagramSocket ds = new DatagramSocket(10000);// 2.定义数据包,用于存储数据byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);// 3.通过服务的recieve方法将收到的数据存入数据包中ds.receive(dp);//阻塞式方法// 4.通过数据包的方法获取其中的数据String ip = dp.getAddress().getHostAddress();String data = new String(dp.getData(), 0, dp.getLength());int port = dp.getPort();System.out.println(ip + "::" + data + "::" + port);//5.关闭资源ds.close();}}

?

????? 通过TCP协议进行简单的网络传输:

??????服务器端代码

?????

import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class TcpServer {public static void main(String[] args) throws Exception {//建立服务端socket,并监听一个端口ServerSocket ss = new ServerSocket(9999);//通过accept方法获取连接过来的客户端对象Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip + ".....connected");//获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据InputStream in = s.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);System.out.println(new String(buf, 0, len));s.close();ss.close();}}

????

?? ?客户端代码

???

import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class TcpClient {public static void main(String[] args) throws Exception {//创建客户端socket服务,指定目的主机和端口Socket s = new Socket("127.0.0.1", 9999);//为了发送数据,应该获取socket流中的输出流OutputStream out = s.getOutputStream();out.write("以tcp形式发送的数据".getBytes());s.close();}}

????????

----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------

?

详情请查看:http://edu.csdn.net/heima

热点排行