您的位置:首页 > 编程语言 > Java开发

大龄屌丝自学笔记--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类

//接收
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();  //释放资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: