网络:一组相互连接的计算机
由多台计算机组成使用物理线路进行连接 网络编程三要素
IP地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备要素
端口号:计算机中应用的标号(代表一个应用程序),0-1024系统使用或保留端口 ,有效端口0-65536
通信协议:通信的规则 TCP,UDP
网络模型 网络模型一OSI参考模式:开放系统互连参考模型(Open System Interconnect)
网络模型二TCP/IP参考模型:传输控制/网际协议 Transfer Controln Protocol/Internet Protocol
IP地址的表示方式▪ IP 地址:32位,由4个8位二进制数组成
▪ IP表示方法:点分十进制
▪ IP地址 = 网络ID +主机ID
– 网络ID:标识计算机或网络设备所在的网段
– 主机ID:标识特定主机或网络设备
▪ 地址类用于指定网络 ID 并在网络 ID 和主机 ID 之间提供分隔方法
▪ IP 地址类包括:
– A 类:1-126 (0 段和 127 段不使用 )
– B 类:128-191
– C 类:192-223
– D 类:224-239
– E 类:240-255
▪ 0.0.0.0:本机
▪ 127.0.0.1:本机回环地址,用于本机测试
▪ 255.255.255.255:当前子网,一般用于向当前子网广播信息
IP地址所对应的对象->InetAddressimport java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressDemo { public static void main(String[] args) { try { InetAddress localHost = InetAddress.getLocalHost(); System.out.println(localHost); InetAddress byName = InetAddress.getByName("www.baidu.com"); System.out.println(byName); System.out.println(byName.getHostAddress()); System.out.println(byName.getHostName()); } catch (UnknownHostException e) { e.printStackTrace(); } } }端口
端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。
传输协议UDP:相当于収短信(有字数限制),不需要建立连接,数据报的大小限制在64k内,效率较高,不安全,容易丢包
TCP:相当于打电话,需要建立连接,效率相对比较低,数据传输安全,三次握手完成。(点名->答到->确认)
Socket套接字▪ 网络上的两个程序通过一个双向的通信连接实现数据的交换
▪ 这个连接的一端称为一个socket。
▪ Java中使用Socket完成TCP程序的开収,使用此类可以方便的建立可靠的、双向的、持续性的、点对点的通讯连接
▪ 在Socket的程序开収中,服务器端使用ServerSocket等待客户端的连接,
▪ 对于java的网络程序来讲,每一个客户端都使用一个Socket对象表示
基于TCP协议的Socket编程进行网络通信时,Socket需要借助数据流来完成数据的传递工作
package client; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; public class Client { public static void main(String[] args) throws IOException { //创建Socket对象,实际上是开启现实io的虚拟接口(此接口不是java中的接口,而是类似于网线的插槽) //需要指定数据接收方的IP地址和端口号 Socket client = new Socket("localhost",10086); //获取输出流对象,向服务端发送数据 OutputStream outputStream = client.getOutputStream(); //将输出流对象进行包装 DataOutputStream dataOutputStream = new DataOutputStream(outputStream); //传输数据 dataOutputStream.writeUTF("Hello,你好"); //关闭流 dataOutputStream.close(); outputStream.close(); client.close(); } }
package server; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class server { public static void main(String[] args) throws IOException { //服务端需要使用serverSocket来开放本地端口 ServerSocket serverSocket = new ServerSocket(10086); //需要接受client传输过来的数据,需要定义socket对象 Socket server = serverSocket.accept(); //通过server获取输入流对象 InputStream inputStream = server.getInputStream(); //对输入流做包装 DataInputStream dataInputStream = new DataInputStream(inputStream); //读取相应的数据 String str = dataInputStream.readUTF(); //关闭所有的流 *** 作 dataInputStream.close(); inputStream.close(); server.close(); serverSocket.close(); } }基于TCP协议的Socket编程
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)