做好网站维护管理,滁州58同城网站怎么做,网站建设的经济效益,wordpress 4.9 站群什么是网络编程#xff1f;
可以让设备中的程序与网络上的其他设备中的程序进行数据交互的技术#xff08;实现网络通信#xff09;。 基本的通信架构
基本的通信架构有两种形式#xff1a;CS架构#xff08;Client客户端/Server服务端#xff09;、BS架构#xff08;…什么是网络编程
可以让设备中的程序与网络上的其他设备中的程序进行数据交互的技术实现网络通信。 基本的通信架构
基本的通信架构有两种形式CS架构Client客户端/Server服务端、BS架构Browser浏览器/Service服务端 1-网络编程三要素 1.1-IP
IPInternet Protocol全称“互联网协议地址”是分配给上网设备的唯一标识。目前被广泛采用的IP地址有两种IPv4、IPv6 IPv4
IPv4是Internet Protocol version 4的缩写它使用32位地址通常以点分十进制表示。 IPv6
IPv6是Internet Protocol version 6的缩写它使用128位地址号称可以为地球上的每一粒沙子编号。IPv6分成8段每段每四位编码成一个十六进制位表示每段之间用冒号:分开将这种方式称为冒分十六进制。 IP域名(Domain Name)
用于在互联网上识别和定位网站的人类可读的名称。
例如
www.baidu.com
www.xunshan777.cn DNS域名解析Domain Name System
是互联网中用于将域名转换为对应IP地址的分布式命名系统。它充当了互联网的“电话薄”将便于记忆的域名映射到数字化的IP地址使得用户可以通过域名来访问网站和其他网络资源。 公网IP、内网IP、本机IP
公网IP是可以连接到互联网的IP地址内网IP也叫局域网IP是只能组织机构内部使用的IP地址例如192.168.开头的就是常见的局域网地址范围为192.168.0.0--192.168.255.255专门为组织机构内部使用。本机IP127.0.0.1、localhost代表本机IP只会寻找当前程序所在的本机。 IP常用命令
ipconfig查看本机IP地址ping IP地址检查网络是否连通。 InetAddress
代表IP地址。 1.1.1-InetAdress的常用方法
InetAddress
代表IP地址。 public static void main(String[] args) {//目标认识InetAddress类获取本机IP对象和对方ID对象。try {//1.获取本机IP对象InetAddress ip1InetAddress.getLocalHost();System.out.println(ip1);System.out.println(ip1.getHostName());System.out.println(ip1.getHostAddress());//2.获取对方ID对象InetAddress ip2InetAddress.getByName(www.baidu.com);System.out.println(ip2);System.out.println(ip2.getHostName());System.out.println(ip2.getHostAddress());//3.判断本机与对方主机是否互通boolean reachable ip2.isReachable(3000);//判断在3000毫秒内是否可以ping通System.out.println(reachable);} catch (Exception e) {e.printStackTrace();}} 1.2-端口
作用用来标记正在计算机设备上运行的应用程序被规定为一个16位的二进制范围是0~65535。 端口分类
周知端口0~1023被预先定义的知名应用占用如HTTP占用80FTP占用21。注册端口1024~49151分配给用户进程或某些应用程序。动态端口49152~65535之所以称为动态端口是因为它一般不固定分配某种进程而是动态分配。注意我们自己开发的程序一般选用注册端口且一个设备中不能出现两个程序的端口号一样否则报错。 1.3-协议
什么是通信协议
网络上通信的设备事先规定的连接以及传输数据的规则被称为网络通信协议。
为了让全球所有上网设备都能互通互联需要指定一套统一的标准 开放式网络互联标准OSI网络参考模型
OSI网络参考模型全球网络互联标准TCP/IP网络模型事实上的国际标准 传输层的两个协议
UDP用户数据报协议。TCP传输控制协议。 UDP协议
特点无连接、不可靠通信。不事先建立连接数据按照包发一包数据包含自己的IP、端口、目的地IP、端口和数据限制在64KB内等。发送方不管对方是否在线数据在中间丢失也不管如果接受方受到数据也不返回确认故是不可靠的。一般常用于视频直播这种因为这种丢一些也没关系。 TCP协议
特点面向连接、可靠通信。TCP的最终目的要保证在不可靠的信道上实现可靠的数据传输。TCP主要有三个步骤实现可靠传输三次握手建立连接、传输数据进行确认四次挥手断开连接。 三次握手建立可靠连接
可靠连接确保通信双方收发消息都是没问题的全双工模式 四次挥手断开连接
目的确保通信双方收发消息都已经完毕。 2-UDP通信
2.1-UDP快速入门
UDP协议
特点无连接、不可靠通信。不事先建立连接数据按照包发一包数据包含自己的IP、端口、目的地IP、端口和数据限制在64KB内等。发送方不管对方是否在线数据在中间丢失也不管如果接受方受到数据也不返回确认故是不可靠的。一般常用于视频直播这种因为这种丢一些也没关系。Java提供了一个Java.net.DatagramSocket类来实现UDP通信。 2.2-UDP协议的多发多收
客户端实现
创建DatagramSocket对象发送端对象使用while死循环不断的接收用户的数据输入如果用户输入的exit则退出程序如果用户输入的不是exit, 把数据封装成DatagramPacket使用DatagramSocket对象的send方法将数据包对象进行发送释放资源 服务端实现
创建DatagramSocket对象并指定端口接收端对象→接韭菜的人创建DatagramPacket对象接收数据数据包对象→韭菜盘子使用DatagramSocket对象的receive方法传入DatagramPacket对象使用while死循环不断的进行第3步 3-TCP通信
3.1-TCP快速入门
TCP协议
特点面向连接、可靠通信。TCP的最终目的要保证在不可靠的信道上实现可靠的数据传输。TCP主要有三个步骤实现可靠传输三次握手建立连接、传输数据进行确认四次挥手断开连接。Java提供了一个java.net.Socket类来实现TCP通信。 3.1.1-TCP通信的实现一发一收客户端开发
客户端程序就是通过java.net包下的Socket类来实现的。 public static void main(String[] args) throws Exception{//目标实现TCP通信下一发一收客户端开发。//1.创建Socket对象请求与服务端的Socket连接。 可靠连接
Socket socketnew Socket(InetAddress.getLocalHost(),9999);//2.从Socket通信管道中得到一个字节输出流。OutputStream os socket.getOutputStream();//3.特殊数据流DataOutputStream dos new DataOutputStream(os);dos.writeInt(1);dos.writeUTF(你好我是客户端);//4.释放资源socket.close();
} 3.1.2-TCP通信的实现一发一收服务端开发
服务端是通过java.net包下的ServerSocket类来实现的。 public static void main(String[] args) throws Exception{//目标完成TCP通信一发一收服务端开发。System.out.println(服务端启动了);//1.创建服务端ServerSocket对象绑定端口号 监听客户端连接ServerSocket ss new ServerSocket(9999);//2.调用accept方法阻塞等待客户端连接一旦有客户端连接会返回一个Socket对象代表和客户端通信的通道Socket socket ss.accept();//3.获取输入流读取客户端发送的数据InputStream is socket.getInputStream();//4.把字节输入流包装成特殊数据输入流DataInputStream dis new DataInputStream(is);//5.读取数据int id dis.readInt();String msg dis.readUTF();System.out.println(idid,收到的客户端消息msgmsg);//6.客户端的ip地址和端口号System.out.println(客户端的ip地址socket.getInetAddress().getHostAddress());System.out.println(客户端的端口号socket.getPort());
} 3.2-TCP的多发多收
客户端使用死循环让用户不断输入消息服务端也使用死循环控制服务端程序接收完消息后继续去接收下一个消息。 3.3-同时接收多个客户端的消息
目前我们开发的服务端程序是否可以支持同时与多个客户端通信
不可以。因为服务端现在只有一个主线程只能处理一个客户端的消息。这个时候我们就要引入多线程。