网络编程的三要素
1、IP地址:唯一标识网络上的每一台计算机 两台计算机之间通信的必备要素
2、端口号:计算机中应用的标号(代表一个应用程序) 0-1024系统使用或保留端口 , 有效端口0-65536
3、通信协议:通信的规则 TCP,UDP
网络模型1··OSI参考模式:开放系统互连参考模型(Open System Interconnect)
网络模型2··TCP/IP参考模型:传输控制/网际协议 Transfer Controln Protocol/Internet Protocol
二、IP地址
1、IP地址的表示方法
▪·IP 地址:32位,由4个8位二进制数组成
▪·IP表示方法:点分十进制
▪·IP地址 = 网络ID +主机ID
– 网络ID:标识计算机或网络设备所在的网段
– 主机ID:标识特定主机或网络设备
2、IP地址的分类
▪·地址类用于指定网络 ID 并在网络 ID 和主机 ID 之间提供分隔方法
▪·IANA负责分配A、B、C类网络地址,具体主机地址由机构组织 自行分配
▪· IP 地址类包括:
3、特殊的IP:
▪· 0.0.0.0:本机
▪·127.0.0.1:本机回环地址,用于本机测试
▪·255.255.255.255:当前子网,一般用于向当前子网广播信息
4、IP地址所对应的对象InetAddress
▪·端口:port
1、 端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过 端口,可以在一个主机上运行多个网络应用程序。
2、传输协议:
UDP:相当于収短信(有字数限制),
不需要建立连接,
数据报的大小限制在64k内,
效率较高,不安全,容易丢包
TCP:相当于打电话,
需要建立连接,
效率相对比较低,
数据传输安全,
三次握手完成。 (点名答到确认)
3、Socket套接字
▪ 网络上的两个程序通过一个双向的通信连接实现数据的交换, ▪ 这个连接的一端称为一个socket。
▪ Java中使用Socket完成TCP程序的开収,使用此类可以方便的建立可靠 的、双向的、持续性的、点对点的通讯连接
▪ 在Socket的程序开収中,服务器端使用ServerSocket等待客户端的连接
▪ 对于java的网络程序来讲,每一个客户端都使用一个Socket对象表示
基于TCP协议的Socket编程
代码如下:
/**
* @Author: Zx lan
* @Date: 2022/4/28 8:08
*
* 客户端
*/
public class Client1 {
public static void main(String[] args) throws IOException {
//获取Socket对象
Socket client = new Socket("192.168.43.173",10000);
//从socket中获取输出流
/*******************向服务区发送一条消息***********************/
OutputStream outputStream = client.getOutputStream();
outputStream.write("你好,服务器,我是客户端".getBytes());
/*******************接收服务响应消息***********************/
InputStream inputStream = client.getInputStream();
//读取服务器响应回来的数据
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
System.out.println("服务器说" + new String(buffer,0,length));
//关闭资源
inputStream.close();
outputStream.close();
client.close();
}
}
/**
* @Author: Zx lan
* @Date: 2022/4/28 8:08
*
* 服务器
*/
public class Server1 {
public static void main(String[] args) throws IOException {
//创建serverSocket对象
ServerSocket serverSocket = new ServerSocket(10000);
System.out.println("*************服务器已开启...**************");
//开启监听
Socket server = serverSocket.accept();
/*******************接收服务区发送一条消息***********************/
InputStream inputStream = server.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
System.out.println("客户端说" + new String(buffer,0,length));
/*******************服务器向客户端响应一条消息***********************/
OutputStream outputStream = server.getOutputStream();
//向客户端传输数据
outputStream.write("我已受到你的消息,我是服务器".getBytes());
//关闭资源
outputStream.close();
inputStream.close();
server.close();
serverSocket.close();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)