一.TCP和UDP
- TCP协议: 传输控制协议
- 使用TCP协议前, 须先建立TCP连接,形成传输数据通道
- 传输前,采用"三次握手"方式,是可靠的
- TCP协议进行通信的两个应用进程:客户端、服务端
- 在连接中可进行大数据量的传输
- 传输完毕,需释放已建立的连接,效率低
- UDP协议:用户数据协议
- 将数据、源、目的封装成数据包,不需要建立连接
- 每个数据报的大小限制在64K内不适合传输大量数据
- 因无需连接,故是不可靠的
- 发送数据结束时无需释放资源(因为不是面向连接的),速度快
二.TCP网络编程
package com.java.Internet_.tcp_;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server_ {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(9999);
System.out.println("服务器已启动,在9999端口监听,等待连接。。。。。");
Socket accept = socket.accept();
System.out.println("服务器 socket = " + accept.getClass());
InputStream inputStream = accept.getInputStream();
byte[] buffer = new byte[1024];
int read = 0;
while ((read = inputStream.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, read));
}
inputStream.close();
accept.close();
socket.close();
}
}
package com.java.Internet_.tcp_;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class Client_ {
public static void main(String[] args) throws Exception {
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
System.out.println("客户端 socket: "+ socket.getClass());
OutputStream outputStream = socket.getOutputStream();
outputStream.write("helloworld".getBytes());
outputStream.close();
socket.close();
}
}