网站开发报告步骤分析,seo优化便宜,点点 wordpress,大型网站技术架构核心原理与案例分析定义:关注底层数据的传输 区分网页编程:关注上层应用
端口号:区分软件 2个字节 0~65535表示端口号 同一协议下端口号不能冲突 8000以下称为预留端口号,建议之间设置端口号为8000以上 常见的端口号: 80:http 8080:tomcat 3306:mysql 1521:oracle InetSocketAddress:此类实现IP套…定义:关注底层数据的传输 区分网页编程:关注上层应用
端口号:区分软件 2个字节 0~65535表示端口号 同一协议下端口号不能冲突 8000以下称为预留端口号,建议之间设置端口号为8000以上 常见的端口号: 80:http 8080:tomcat 3306:mysql 1521:oracle InetSocketAddress:此类实现IP套接字地址(IP地址端口号)
URL:同一资源定位符,互联网中资源的指针 互联网的三大基石:http html url url组成: 协议:http 域名:www.baidu.com 端口:80 资源:index.html?usernamezhangsanpassword1234#a http://www.baidu.com:80/index.html?usernamezhangsanpassword1234#a
传输层协议:(标准,合同规范) UDP:写信 不安全,协议简答,开销小,效率高 大小限制一般不超过60k TCP:打电话 基于连接 安全,效率低 没有大小限制
IP:定位网络中的节点(区分电脑,手机) IPV4 4个字节 32位 IPV6 128位 特殊的IP: 192.168.0.0-192.168.255.255 非注册IP,供组织内部使用的IP 127.0.0.1 本地IP localhost:本地 IP与域名 DNS解析器:做域名与IP直接解析问题 java.net包 InetAddress
Socket:套接字 传输层为应用层开辟的一个小口子 面向Socket编程,不同的传输层协议对Socket的实现不同
UDP协议实现: 两端平等:发送端 接口端 UPD协议下数据传输基于字节数组 DatagramSocket DatagramSocket(int port) 构造一个数据报套接字并将其绑定到本地主机上的指定端口。 void receive(DatagramPacket p) 从此套接字接收数据报包。 void send(DatagramPacket p) 从此套接字发送数据报包。 DatagramPacket : 该类表示数据报包。
UDP协议下基本流程: 发送端: 1.定义发送端 2.准备数据 3.打包数据 4.发送 5.关闭
接收端: 1.定义接收端 2.准备包裹用来接收 3.接收数据 4.处理数据 5.关闭
TCP 协议下两端是不平等的,客户端,服务器端 tcp协议下数据传输基于IO流
TCP协议下实现基本流程: 客户端: 1.定义客户端 Socket该类实现客户端套接字,两台机器通信的端点 Socket(String host,int port)参数:服务器IP端口 2.准备数据 3.获取输出流,向服务器发送数据 4.刷出 5.关闭 服务器端: 1.定义服务器 ServerSocket该类实现服务器套接字 2.阻塞式监听 3.获取输入流,读取客户端发送的数据 4.处理数据 5.关闭
单向登入 TCP协议下实现单向登录流程 : 客户端 1.定义我是客户端 2.键盘输入接收用户输入的登录信息 usernamezhangsanpassword123 3.获取输出流,向服务器发送数据 4.刷出 5.关闭
public class Client {
public static void main(String[] args) throws Exception {
// 创建要发送数据报包的工具我本身占用9000端口向外面机器发数据包
DatagramSocket ds new DatagramSocket(9000);
byte[] b aaaa.getBytes();
//必须告诉数据包要发到哪里去 封装数据时才 指定 目标电脑以及端口
DatagramPacket dp new DatagramPacket(b,b.length,new
InetSocketAddress(localhost,8999));
ds.send(dp);
ds.close();
}
}TCP协议下实现单向登录流程 : 服务端 1.定义我是服务器 2.阻塞式监听 3.获取输入流,读取客户端发送的数据 4.处理数据 校验用户输入的登录信息是否正确(admin 1234) 5.关闭 public class Server {
public static void main(String[] args) throws Exception {
// 创建数据报包 工具
DatagramSocket ds new DatagramSocket(8999);
// 准备接收数据的容器空间
byte[] b new byte[1024];
// 数据报
DatagramPacket dp new DatagramPacket(b,b.length);
ds.receive(dp); //阻塞式方法
String string new String(dp.getData(),0,dp.getLength());
//dp.getLength()返回实际收到的数据的字节数
System.out.println(string);
ds.close();
}
}双向登入 TCP协议下实现双向登录流程 : 客户端 1.定义我是客户端 2.键盘输入接收用户输入的登录信息 usernamezhangsanpassword123 3.获取输出流,向服务器发送数据 4.刷出 5.获取输入流,读取服务器响应的结果 6.处理结果 7.关闭 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 最简单的Socket客户端
*
*/
public class BasicSocketClient {
public static void main(String[] args) {
try {
//指定的是所要连接的服务器的ip和端口。而不是自己机器的端口。发送端口是随机的。
Socket socket new Socket(InetAddress.getLocalHost(),8888);
// ObjectInputStream ois new
ObjectInputStream(socket.getInputStream());
// String string (String) ois.readObject();
// System.out.println(string);
BufferedReader br new BufferedReader(new
InputStreamReader(socket.getInputStream()));
System.out.println(br.readLine());
br.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}TCP协议下实现双向登录流程 : 服务端 1.定义我是服务器 2.阻塞式监听 3.获取输入流,读取客户端发送的数据 4.处理数据 校验用户输入的登录信息是否正确(admin 1234) 5.获取输出流,将结果响应给客户端 6.刷出 7.关闭
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 最简单的服务器端代码
*
*/
public class BasicSocketServer {
public static void main(String[] args) {
try {
//建立服务器端套接字
ServerSocket serverSocket new ServerSocket(8888); //tcp端口一共多少
个??
//监听等待客户端请求并愿意接收连接。
System.out.println(服务端建立监听);
Socket socket serverSocket.accept();
//通过流向客户端发送数据
// ObjectOutputStream oos new
ObjectOutputStream(socket.getOutputStream());
// oos.writeObject(aaaaa);
// oos.close();
BufferedWriter bw new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream()));
bw.write(hhhh);
bw.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}