#粤嵌星计划,粤嵌我来了#
#粤嵌星计划,粤嵌我来了#
TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。
由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。
具体实现
客户端:
/*
* 客户端步骤:
* 1. 创建一个Socket对象,要指定ip地址,和端口号
* 2. 获取输出流
* 3. 写数据及输出OutputStream
* 4. 获取服务器端的数据:InputStream
* 5. 关闭资源
*/
public class Client {
public static void main(String[] args) throws IOException {
//1.创建一个Socket对象,要指定ip地址,和端口号
Socket s = new Socket("192.168.55.1", 6006);
//2.获取输出流
OutputStream out = s.getOutputStream();
//3.写数据及输出OutputStream
out.write("服务器你好".getBytes());
//4.获取服务器端的数据:InputStream
InputStream in = s.getInputStream();
byte[] bytes = new byte[1024];
int read = in.read(bytes);
String str = new String(bytes,0,read);
System.out.println("服务器说:"+str);
//5.关闭资源
s.close();
}
}
服务端:
/*
* 服务器步骤:
* 1.创建一个服务器,ServerSocket对象(指定端口号)
* 2.开启服务器调用accept方法等待客户端连接
* 3.接收客户端发送过来的数据InputStream
* 4.返回数据给客户端。OutputStream
* 5.关闭资源
*/
public class Service {
public static void main(String[] args) throws IOException {
//1.创建一个服务器,ServerSocket对象(指定端口号)
ServerSocket ss = new ServerSocket(6006);
//2.开启服务器调用accept方法等待客户端连接
Socket socket = ss.accept();
//3.接收客户端发送过来的数据InputStream
InputStream in = socket.getInputStream();
byte[] bytes = new byte[1024];
int i = in.read(bytes);
String str = new String(bytes, 0, i);
System.out.println("客户端消息:" + str);
//4.返回数据给客户端。
OutputStream out = socket.getOutputStream();
out.write("我很好".getBytes());
//5.关闭资源
socket.close();
ss.close();
}
}
TCP协议与UDP协议的区别
(1)TCP是可靠传输,UDP是不可靠传输;
(2)TCP面向连接,UDP无连接;
(3)TCP传输数据有序,UDP不保证数据的有序性;
(4)TCP不保存数据边界,UDP保留数据边界;
(5)TCP传输速度相对UDP较慢;
(6)TCP有流量控制和拥塞控制,UDP没有;
(7)TCP是重量级协议,UDP是轻量级协议;