参考白皮书
三次握手和四次挥手1.TCP协议通过三次握手建立连接,通过四次挥手断开连接,UDP协议没有
2.TCP协议如果握手失败,是不会发生数据包的,UDP协议直接就发
TCP和UDP的区别
1.TCP和UDP都属于传输层的协议
2.TCP是可靠的,UDP是不可靠的
3.TCP有拥塞机制,UDP没有
拥塞机制指的是根据当前网络状况动态调整传输速率
4.TCP有重传机制,UDP没有
如果TCP协议在传输过程中发生了丢包,TCP会重传保证数据包的完整性
单工、半双工、全双工单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。
半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。
全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。
长连接和短连接推送消息是长连接
需要自己刷新接收的是短连接
CS架构和BS架构CS Client - Server 客户端服务器架构模型
CS架构的软件需要安装,客户端和服务端都需要更新
BS Browser - Server 浏览器服务器架构模型
BS架构的软件不需要安装,只需要一个浏览器即可,更新的时候只需要更新服务端,不需要更新客户端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Demo01 {
public static void main(String[] args) {
ServerSocket server = null;
try {
System.out.println("服务端启动成功,监听8080端口,等待客户端接入");
server = new ServerSocket(8080);
Socket socket = server.accept();
System.out.println("客户端接入成功");
InputStream is = socket.getInputStream();
byte[] data = new byte[1024];
int n = is.read(data);
String str = new String(data,0,n);
System.out.println("客户端" + str);
OutputStream os = socket.getOutputStream();
String back = "welcome";
os.write(back.getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Demo02 {
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("192.168.121.1",8080);
OutputStream os = socket.getOutputStream();
String send = "Hello";
os.write(send.getBytes());
InputStream is = socket.getInputStream();
byte[] data = new byte[1024];
int n = is.read(data);
String str = new String(data,0,n);
System.out.println("服务端" +str);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}



