#粤嵌星计划,粤嵌我来了#
#粤嵌星计划,粤嵌我来了#
1、TCP协议
TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。
由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。
2、实现TCP程序
(1)服务端(这里使用本地的eclipse编写服务端)
步骤:
1. 创建一个服务器,ServerSocket对象(指定端口号)
2. 开启服务器调用accept方法等待客户端连接
3. 接收客户端发送过来的数据。InputStream
4. 返回数据给客户端。OutputStream
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(6666);
Socket socket = ss.accept();
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
while(true) {
String receive = dis.readUTF();
System.out.println("来自客户端的数据:" + receive);
dos.writeUTF("收到了");
dos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
(2)客户端(这里使用本地的Idea编写客户端)
步骤:
1. 创建一个Socket对象,要指定ip地址,和端口号
2. 获取输出流
3. 写数据及输出OutputStream
4. 获取服务器端的数据:InputStream
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("192.168.55.62",6666);
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
while(true) {
System.out.print("请输入信息:");
dos.writeUTF(new Scanner(System.in).next());
dos.flush();
String receive = dis.readUTF();
System.out.println("来自服务端的数据:" + receive);
}
} catch (IOException e) {
e.printStackTrace();
}
}
(3)结果
先启动服务器,等待客户端连接,启动客户端后,向服务器发送信息,服务端接收到来自客户端的信息后,向客户端回复,表示收到了
服务器端结果:
客户端结果: