[info]1. 软件结构[/info]
B/S结构:browser server 浏览器服务器模型如 贪玩蓝月,轩辕传奇,4399,等无需下载直接浏览器URL可以访问的程序。
C/S结构:client server 客户端服务器模型,撸啊撸,王者农,地下城qq等需要安装客户端的程序。
[info]2. 网络通讯协议[/info]
计算机与计算机直接连接的规则,把互联网分为五层每一层都有自己不同的规则

- 实体层:计算机啊与计算机用什么连起来,可以实光缆,电缆,双绞线,无线电波等方式。
- 链接层:单纯的0和1没有任何意义,必须规定解读方式:常见以太网协议(Ethernet)规定数据,MAC地址用来定位网卡和数据包的位置等。。。
- 网络层:IP 地址
- 传输层:TCP UDP 这是应用之间不同功能设定的不同协议。
- 应用层:HTTP FTP TFTP SMTP SNMP DNS 等。。。
重点说明传输层:
- UDP:UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。
- TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。
- 三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。
第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。
- 特点:UDP简单速度快,容易丢包,TCP安全无差别传输。
[info]3.Socket类ServerSocket类 [/info]
Socket:该类是实现客户端套接字,套接字指两台设备之间的通讯端点。
//Socket(String host, int port)创建Socket套接字对象并指定端口和地址
//OutputStream getOutputStream() : 返回此套接字的输出流。
// InputStream getInputStream() : 返回此套接字的输入流。
// void shutdownOutput() : 禁用此套接字的输出流。
ServerSocket类:这个时服务器端的套接字,该对象等待网络请求
//ServerSocket(int port) :创建ServerSocket对象并指定端口号
// Socket accept() :接收并返回一个Socket对象,用于与客户端实现通信
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*服务器端*/
public class Service {
public static void main(String[] args) throws IOException {
//ServerSocket(int port) :创建ServerSocket对象并指定端口号
ServerSocket ss = new ServerSocket(8888);
// Socket accept() :接收并返回一个Socket对象,用于与客户端实现通信
Socket socket = ss.accept();
//InputStream getInputStream() : 返回此套接字的输入流。
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes, 0, len));
OutputStream os = socket.getOutputStream();
os.write("收到谢谢".getBytes());
socket.close();
ss.close();
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*客户端*/
public class Demo01 {
public static void main(String[] args) throws IOException {
// void shutdownOutput() : 禁用此套接字的输出流。
// InputStream getInputStream() : 返回此套接字的输入流。
//Socket(String host, int port)创建Socket套接字对象并指定端口和地址
Socket socket = new Socket("127.0.0.1", 8888);
//OutputStream getOutputStream() : 返回此套接字的输出流。
OutputStream os = socket.getOutputStream();
os.write("你好服务器".getBytes());
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes, 0, len));
socket.close();
}
}
打印输出结果:
收到谢谢
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
Mount‘s Blog
本文地址: Java基础——网络编程
本文地址: Java基础——网络编程
您必须 登录 才能发表评论