七日阅书7 网络通信&全书总评《Java程序设计与计算思维》
Posted 小雨青年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七日阅书7 网络通信&全书总评《Java程序设计与计算思维》相关的知识,希望对你有一定的参考价值。
一、前言
本文为【七日阅书】《Java程序设计与计算思维》的最后一篇,主要内容是介绍网络相关以及全书总评。
前面内容请参考如下
【七日阅书】1 计算思维和Java特性《Java程序设计与计算思维》
【七日阅书】2 Java的数据类型和流程控制《Java程序设计与计算思维》
【七日阅书】3 字符串、数组、集合、泛型《Java程序设计与计算思维》
【七日阅书】5 抽象和接口、异常处理《Java程序设计与计算思维》
【七日阅书】6 多线程和文件流《Java程序设计与计算思维》
二、初识网络
首先我们需要对网络有基本的概念,这里本书介绍的也不多,仅作为基础概念作为补充。
java.net
库能获取网络信息。
InetAddress inetAddress = InetAddress.getLocalHost();
System.out.print(inetAddress.getHostAddress());
System.out.print("\\r\\n");
System.out.print(inetAddress.getHostName());
三、Socket接口
Socket分为两类
- TCP。Stream通信,特点是保证传输。
- UDP。Datagram通信,特点是无连接,不保证送达。
服务端连接Socket的过程如下
package com.example.demo.tool;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
public class Server
ServerSocket serverSocket;
Socket socket;
public InputStream inputStream;
public OutputStream outputStream;
public Server(int port)
try
serverSocket = new ServerSocket(port);
while (true)
socket = serverSocket.accept();
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
String line = System.getProperty("line.separator");
String out = "服务器信息:" + line + serverSocket.getInetAddress().getHostName()
+ line + serverSocket.getLocalPort();
outputStream.write(out.getBytes(StandardCharsets.UTF_8));
catch (IOException exception)
System.err.print(exception.toString());
控制器调用如下
Server server;
int port = 1024;
BufferedReader bufferedReader;
PrintWriter printWriter;
server = new Server(port);
bufferedReader = new BufferedReader(new InputStreamReader(server.inputStream));
printWriter = new PrintWriter(new OutputStreamWriter(server.outputStream));
打开本地终端访问telnet localhost 1024
,就能连接建立的socket服务 。
四、UDP通信
DatagramSocket是一个低级的网络接口,没有数据流操作,只有字节数组来传送或接收。
DatagramPacket类可以用来创建一个数据分组,再通过DatagramSocket进行传送和接收。
接收端代码
DatagramPacket datagramPacket;
DatagramSocket datagramSocket;
byte[] buffer = new byte[20];
String msg;
System.out.print("服务端开始接收数据");
while (true)
datagramPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket = new DatagramSocket(9995);
datagramSocket.receive(datagramPacket);
msg = new String(buffer,0,datagramPacket.getLength());
System.out.print("信息为:" + msg + "\\r\\n");
datagramSocket.close();
发送端代码
System.out.print("发送消息\\r\\n");
String msg= "msg 123232";
byte[] buffer = msg.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(buffer,buffer.length, InetAddress.getByName("127.0.0.1"),9995);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(datagramPacket);
datagramSocket.close();
先访问接收端,再多次请求发送端,我们就能看到输出。
这样我们就简单完成了UDP传输的应用。
从上面的例子中,我们可以看出TCP和UDP的区别。
五、URL类
URL类比较简单,属于工具类,通过输入网址得到协议、接口等信息。
URL url = new URL("https://blog.csdn.net/diandianxiyu_geek");
System.out.print(url.getProtocol() + "\\r\\n");
System.out.print(url.getPath() + "\\r\\n");
System.out.print(url.getHost() + "\\r\\n");
System.out.print(url.getFile() + "\\r\\n");
System.out.print(url.getQuery() + "\\r\\n");
System.out.print(url.getRef() + "\\r\\n");
执行结果如下
六、总评
本书对Java基础做了全面的介绍,并带有源码,我在学习的过程中全部手写了对应示例的代码,并做了细微的调整,并不是完全照抄。
这几年前后端的职责分工越来越细,所以我忽略了本书对于Swing等界面开发的相关内容,专注语言本身。如果你阅读的书籍中的内容并不是全部都会有帮助,可以选择性的学习,找到属于自己的重点。
本书中每章节最前面的描述性文字的信息量很大,但是出于本书的定位并没有详细展开,作为读者的我还是有些遗憾的。
推荐人群
- 刚入门的大学生
- 刚接触Java语言不久的开发人员
- 想要了解Java语言的人士
七、源码地址
以上是关于七日阅书7 网络通信&全书总评《Java程序设计与计算思维》的主要内容,如果未能解决你的问题,请参考以下文章
七日阅书5 抽象和接口异常处理《Java程序设计与计算思维》
七日阅书3 字符串数组集合泛型《Java程序设计与计算思维》
七日阅书2 Java的数据类型和流程控制《Java程序设计与计算思维》