Java语言入门(十二)——网络编程
发布日期:2022-02-28 07:22:50 浏览次数:43 分类:技术文章

本文共 3871 字,大约阅读时间需要 12 分钟。

Java语言入门

计算机网络分类

  1. 按规模大小和延伸范围划分:局域网,域域网,广域网
  2. 按网络的拓扑结构划分:环形网,星行网,总线型网等
  3. 按通信传输的介质划分:双绞线网,同轴电缆网,光纤网和卫星网等
  4. 按信号频带占方式划分:宽带网和基带网

计算机网络工作模式

  1. 专用服务器结构(又称工作站/文件服务器结构)
    由若干台微机工作站与一台或多台文件服务器,通过通信线路连接起来,组成工作站存取服务器文件,共享存储设备。
  2. 客户机/服务器模式
    其中一台或几台较大的计算机集中进行共享数据库的管理和存取,成为服务器,而将其它的应用处理工作分散到网络中国其它微机上去做,构成分布式的处理系统。
  3. 对等式网络
    在拓扑结构上与专用Server与C/S相同。在对等式网络结构中,没有专用服务器。每一个工作站,既可以起客户机作用,也可以起服务器作用

网络通信协议及接口

  1. 网络通信协议
    计算机网络中实现通信必须有一些约定,即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等制定标准。
  2. 网络通信接口
    为了使两个结点之间能进行对话,必须在他们之间建立通信工具,即接口。接口包括两部分:
    (1)硬件装置:实现结点之间的信息传送
    (2)软件装置:规定双方进行通信的约定协议

通信协议分层的思想

  1. 由于结点之间联系很复杂,在制定协议时,把复杂成分分解成一些简单的成分,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与下一层不发生关系。
  2. 通信协议的分层规定:
    把用户应用程序作为最高层,把物理通信线路作为最低层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。

通信协议参考模型

在这里插入图片描述

常用网络通信协议

  1. TCP/IP协议(传输控制协议/网际协议)
  2. HTTP协议(超文本传输协议)
  3. FTP协议(文件传输协议)
  4. SMTP协议(简单邮件传输协议)
  5. POP3/IMAP协议(邮局协议版本3/Internet消息访问协议)

IP地址/域名/端口

  1. IP地址(命令行模式下ipconfig/all)
    TCP/IP使用IP地址来标识源地址和目的地址
    IP地址格式:166.111.78.98
    目前正在普遍使用的IP协议时第四版,称为“IPv4”。新版本的IPv6协议也已经开始推广。
  2. 域名
    便于记忆的字符串形式,如“news.sina.com.cn”
    与IP地址间存在映射关系,由位于网络中的域名服务器(DNS)负责将域名解析为相应的IP地址。
  3. 端口
    逻辑意义上的数据传输通道,或者说模拟通道。TCP/IP协议约定,每台计算机拥有65536个这种逻辑通信端口。
    端口号:用于标识这些端口的整数编号,其取值范围为0~65536。

相关API

  1. JDK中java.net包中定义了与IP地址/域名有关的类。
  2. java.net.InetAddress
    32位或128位无符号数字表示的IP地址
  3. java.net.Inet4Address
    继承了InetAddress类,以32位无符号数字表示的IPv4地址。其典型表示形式是由原点分隔开的4段、取值范围0~255的十进制数值,例,166.111.78.98
  4. Java.net.Inet6Address
    继承了InetAddress类,以128位无符号数字表示的Ipv6地址。其典型表示形式是由冒号分隔开的8段、取值范围0000~FFFF的十进制数值,例,1080:0:0:0:8:800:200C:417A
  5. 举例:TestInetAddress.java
  6. 方法
    (1)static InetAddress getLocalHost()
    返回本地主机。
    (2)String getHostName()
    获取此 IP 地址的主机名。
    (3)String getHostAddress()
    返回 IP 地址字符串(以文本表现形式)。
    (4)static InetAddress getByName(String host)
    在给定主机名的情况下确定主机的 IP 地址。
import java.net.*;public  class TestInetAddress{
public static void main(String[] args) {
try {
InetAddress ia=InetAddress.getLocalHost(); showInfor(ia); ia=InetAddress.getByName("www.sina.com.cn"); showInfor(ia); }catch(java.net.UnknownHostException e) {
e.printStackTrace(); } } public static void showInfor(InetAddress ia) {
String name=ia.getHostName(); String address= ia.getHostAddress(); System.out.println(name); System.out.println(address); }}

URL

  1. Uniform Resoure Locator的缩写,即统一资源定位器,用于表示Internet上资源的地址。
  2. URL格式:
    <协议名><资源所在主机名>[:<端口号>]<资源名>
    http://home netscape.com/home/welcome html
    http://www.sun.com
    http://iask.sina.com.cn/b/9848848.html
  3. Java.net包中定义了URL类,常用方法如下:
  4. URL(String spec) 根据 String 表示形式创建 URL 对象。
  5. InputStream openStream()
    打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
  6. 用法举例 :TestURL.java
    // java -Dhttp.proxyHost=192.168.1.1 -Dhttp.proxyPort=11080 TestURL
import java.io.*;import java.net.*;class TestURL {
public static void main(String[] args) {
//System.setProperty("http.proxyHost","192.168.1.1"); //System.setProperty("http.proxyPort","11080"); try {
URL h=new URL("http://www.google.cn/"); BufferedReader in=new BufferedReader(new InputStreamReader(h.openStream())); String s; while ((s=in.readLine())!=null) System.out.println(s); in.close(); }catch (MalformedURLException e) {
System.out.println(e);} catch(IOException e){
System.out.println(e);} } }

Socket编程(双向连接)

  1. 两个进程间可以通过一个双向的网络通信连接现实数据交换,这种通信链路的端点被称为“套接字”(Socket)。
  2. Socket通常用来实现Client-Server连接。
    建立连接时所需的寻址信息:远程计算机的机器名或IP地址;试图连接的端口号(Port number)
  3. java.net包定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server端

Socket通信模型

在这里插入图片描述

Socket编程基本步骤

  1. 建立网络连接
  2. 打开连接到Socket的输入/输出流
  3. 通过已打开的I/O流进行数据读/写操作
  4. 关闭已打开的I/O流和Socket

  1. public class Socket extends Object
    此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
  2. public class ServerSocket extends Object
    此类实现服务器套接字。服务器套接字等待请求通过网络传入。

方法

  1. Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
  2. ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
  3. Socket accept() 侦听并接受到此套接字的连接。
  4. Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字
  5. void close() 关闭此套接字。

转载地址:https://blog.csdn.net/weixin_45854582/article/details/106231310 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java语言入门(十一)——流
下一篇:小程序简单认识

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月24日 01时58分24秒