重庆媒体网站建设单价,怎么用ajax做电商网站,什么是优化型网站,建功能网站一、什么是网络编程 概述#xff1a;在网络通信协议下#xff0c;不同计算机上运行的程序#xff0c;进行数据传输 应用场景#xff1a;即时通信#xff0c;网游对战#xff0c;金融证券#xff0c;国际贸易#xff0c;邮件等等 不管什么场景#xff0c;本质上都是计算…一、什么是网络编程 概述在网络通信协议下不同计算机上运行的程序进行数据传输 应用场景即时通信网游对战金融证券国际贸易邮件等等 不管什么场景本质上都是计算机跟计算机之间通过网络进行数据传输
常见的软件结构
C/S结构客户端和服务器结构
在用户本地需要下载安装客户端程序在远程有一个服务器端程序
C / S的优缺点
1、画面可以做的非常精美用户体验好
2、需要开发客户端也需要开发服务端
3、用户需要下载更新的时候太麻烦
B/S结构浏览器和服务端结构
只需要一个浏览器用户通过不同的地址客户访问不同的服务器 B / S的优缺点
1、不需要开发客户端
2、用户不需要下载打开浏览器就能使用
3、如果应用过大用户体验受到影响
通信三要素
IP地址计算机的唯一标识用于两台计算机之间的连接协议数据在网络中传输的规则常见的协议有TCPUDPhttp,ftp等
TCP面向连接协议需要先确认连接才能进行数据交互数据安全但效率低UDP面向无连接协议效率高但传输的数据不安全
端口号每一个应用程序的唯一标识 二、了解UDP协议和TCP协议
UDP协议 udp是无连接不可靠协议将数据源ip、目的地ip和端口号封装成数据包不需要建立连接每个包再64kb内发送不管对方是否准备好接收方收到也不确认故是不可靠的可以广播发送发送数据结束时无需释放资源开销小速度快 DatagramSocket-数据包对象好比快递找的快递公司DatagramPacket-发送端和接收端对象好比快递公司打包
详细过程
1.发送端客户端
创建DatagramSocket对象
a.空参端口号从可用端口号随机一个使用
b.有参自己指定
创建DatagramPacket对象将数据进行打包
a.要发送的数据-byte[]
b.指定接收端的IP
c.指定接收端的端口号
发送数据释放资源
public static void main(String[] args) throws IOException {DatagramSocket socket new DatagramSocket();byte[] buf hello.getBytes();InetAddress address InetAddress.getByName(127.0.0.1);int port6666;DatagramPacket packet new DatagramPacket(buf, buf.length, address, port);socket.send(packet);socket.close();}
直接执行发现发送端在没有接收端的情况下不会报错因为UDP协议是面向无连接协议不管是否有接收端都会发送
2.接收端服务端
创建DatagramSocket对象指定服务器的端口号接收数据包解析数据包释放资源
public class Recieve {public static void main(String[] args) throws IOException {DatagramSocket socketnew DatagramSocket(6666);byte[] bufnew byte[1024];//用于保存接收过来的数据DatagramPacket packetnew DatagramPacket(buf, buf.length);socket.receive(packet);byte[] datapacket.getData();//接收的数据int lenpacket.getLength();//从数据包中获取多少个数据InetAddress addresspacket.getAddress();//获取发送端的主机int portpacket.getPort();//发送端的端口号System.out.println(new String(data,0,len));System.out.println(address:port);socket.close();}
}
TCP协议 使用tcp协议必须建立连接他是一种面向对象的可靠协议采用三次握手四次挥手所以可靠在连接中可进行大数据量传输连接、发送数据都需要确认且传输完毕后还需要释放自己建立的连接通信效率低 三次握手和四次挥手 1. 三次握手建立连接 第一次握手客户端向服务器发送连接请求等待服务器确认。 第二次握手服务器向客户端发送响应表示已收到连接请求。 第三次握手客户端再次向服务器发送确认信息完成连接建立。 作用确保双方通信正常防止无效连接请求。 2. 四次挥手断开连接 第一次挥手客户端向服务器发送结束连接请求进入半关闭状态不再发送数据但仍可接收数据。 第二次挥手服务器收到请求后发送最后的数据并通知上层应用停止接收数据。 第三次挥手服务器发送释放连接报文通知客户端可以正式断开。 第四次挥手客户端收到后回复最终确认报文并等待2MSL最长报文段生存时间。 等待原因确保服务器收到确认若超时未收到服务器会重发释放请求。作用确保数据完全传输安全释放连接。 客户端编写
Socket客户端对象
1.创建Socket客户端对象指明服务端的IP和端口号
2.调用Socket对象中的getOutputStream获取输出流发送请求
3.调用Socket中的getInputStream获取输入流读取响应结果
4.关流 public static void main(String[] args) throws IOException {Socket socket new Socket(127.0.0.1, 6666);OutputStream os socket.getOutputStream();os.write(hello.getBytes());InputStream is socket.getInputStream();byte[] buffer new byte[1024];int len is.read(buffer);System.out.println(new String(buffer,0,len));is.close();os.close();socket.close();}
服务端编写
ServerSocket服务端对象
1.创建ServerSocket对象设置端口号
2.调用ServerSocket中的accept方法等待客户端连接该方法返回的是连接服务端的socket对象
3.调用socket中的getInputStream读取请求
4.调用socket中的getOutputStream用于给客户端写响应
5.关流
public class Recieve {public static void main(String[] args) throws IOException {ServerSocket ssnew ServerSocket(6666);Socket sss.accept();InputStream iss.getInputStream();byte[] bnew byte[1024];int lenis.read(b);System.out.println(new String(b,0,len));OutputStream oss.getOutputStream();os.write(word.getBytes());os.close();is.close();s.close();ss.close();}
}