大龄屌丝自学笔记--Java零基础到菜鸟--038
2015-10-28 19:01
531 查看
网络模型、要素,Socket,UDP,TCP
1、网络模型
OSI:Open System Interconnectopn,开放系统互连。
【物理层】-【数据链路层】-【网络层】-【传输层】-【会话层】-【表示层】-【应用层】
TCP/IP:
【主机至网络层】-----------【网际层】-【传输层】-【应用层】
2、要素
网络编程三要素:IP地址,端口,协议。
UDP协议:数据打包不建立连接,数据有限制,效率高,不可靠。(类似发短信)
TCP协议:建立数据通道,数据无限制,效率低,可靠。(类似打电话)
InetAddress类(IP地址对象类)
3、Socket
Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起,构成唯一能被识别的标识符套接字。
Socket原理机制:通信两端都有Socket对象,且所有通信都是通过Socket间的IO流进行操作。
4、UDP
接收:【创建UDP接收端Socket对象】-【创建用于接收数据的数据包】-【接收数据】-【解析数据包】-【释放资源】
发送:【创建UDP发送端Socket对象】-【创建数据并打包】-【发送数据】-【释放资源】
DatagramSocket类,DatagramPacket类
5、TCP
接收:【创建TCP服务端Socket对象】-【监听客户端连接】-【获取输入流,读数据】-【释放资源】
发送:【创建TCP客户端Socket对象】-【获取输出流,写数据】-【释放资源】
Socket类,ServerSocket类
1、网络模型
OSI:Open System Interconnectopn,开放系统互连。
【物理层】-【数据链路层】-【网络层】-【传输层】-【会话层】-【表示层】-【应用层】
TCP/IP:
【主机至网络层】-----------【网际层】-【传输层】-【应用层】
2、要素
网络编程三要素:IP地址,端口,协议。
UDP协议:数据打包不建立连接,数据有限制,效率高,不可靠。(类似发短信)
TCP协议:建立数据通道,数据无限制,效率低,可靠。(类似打电话)
InetAddress类(IP地址对象类)
3、Socket
Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起,构成唯一能被识别的标识符套接字。
Socket原理机制:通信两端都有Socket对象,且所有通信都是通过Socket间的IO流进行操作。
4、UDP
接收:【创建UDP接收端Socket对象】-【创建用于接收数据的数据包】-【接收数据】-【解析数据包】-【释放资源】
发送:【创建UDP发送端Socket对象】-【创建数据并打包】-【发送数据】-【释放资源】
DatagramSocket类,DatagramPacket类
//接收 DatagramSocket ds = new DatagramSocket(10086); //创建接收端Socket对象 byte[] bys = new byte[1024]; //创建数据 int length = bys.length; //长度 DatagramPacket dp = new DatagramPacket(bys,length) //用于接受数据的数据包(容器) ds.receive(dp); //接收数据 byte[] bys2 = dp.getData(); //解析数据 System.out.println(new String(bys2,0,bys2.length)); //输出 ds.close(); //释放资源 //发送 DatagramSocket ds = new DatagramSocket(); //创建发送端Socket对象 byte[] bys = "Hello World".getBytes(); //创建数据 int length = bys.length; //长度 InetAddress address = InetAddress.getByName("192.168.12.34"); //IP地址 int port = 10086; //端口 DatagramPacket dp = new DatagramPacket(bys,length,address,port) //数据打包 ds.send(dp); //发送数据 ds.close(); //释放资源
5、TCP
接收:【创建TCP服务端Socket对象】-【监听客户端连接】-【获取输入流,读数据】-【释放资源】
发送:【创建TCP客户端Socket对象】-【获取输出流,写数据】-【释放资源】
Socket类,ServerSocket类
//接收 ServerSocket ss = new ServerSocket(8888); //创建服务端Socket对象 Socket s = ss.accept(); //监听 InputStream is = new s.getInputStream(); //输入流 byte[] bys = new byte[1024]; //创建数据 int len = is.read(bys); //长度 String str = new String(bys,0,len); //读数据 System.out.println(str); //输出 s.close(); //释放资源 //发送 InetAddress address = new InetAddress.getByName("192.168.12.34"); //IP地址 int port = 8888; //端口 Socket s = new Socket(address,port); //创建客户端Socket对象 OutputStream os = new s.getOutputStream(); //输出流 os.write("Hello World".getBytes()); //写数据 s.close(); //释放资源
相关文章推荐
- Spring常用注解汇总
- Java实现增加天数得到新的日期
- java-jdbc
- Eclipse 在生成javadoc 编码GBK的不可映射字符
- 自定义异常类
- java exception
- 详解设计模式在Spring中的应用
- Spring集成Junit testNG
- 【LWJGL官方教程】总目录
- ognl.OgnlException: target is null for setProperty(null, "tkscName", [Ljava.lang.String;@1bf9980)
- Eclipse配置Maven
- Java监控常用工具 .
- Map线程安全
- java生产随机字符串
- Java Web开发中前后端分离的技术方案和优缺点
- Spring事务管理-回滚
- 关于java文件下载文件名乱码问题解决方案
- [转]在Eclipse中使用JUnit4进行单元测试(初级篇)
- 场景二:synchronized修饰方法
- Spring事务异常rollback-only