自学内容网 自学内容网

Java 网络编程

TCP

    TCP是面向连接的协议,即在传输数据前先发送端和接收端建立逻辑连接,然后在传输数据,它提供了两台计算机之间可靠、无差错的数据传输。

    在TCP连接中必须明确客户端和服务器端,由客户端向服务器端发送连接请求。每次连接的创建都需要经过三次握手:第一次握手,客户端向服务器端发送连接请求,等待服务器端确认;第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求;第三次握手,客户端向服务器端发送确认信息。

    因为TCP拥有面向连接的特性,所以它可以保证传输数据的安全性,是一个被广泛使用的协议。

UDP

    UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,就是当一台计算机向另一台计算机发送数据时,发送端不会确认接收端是否存在就会发出数据;同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    由于UDP协议消耗资源小,通信效率高,UDP协议通常用于音频,视频的传输。但在传输重要数据时不建议使用UDP协议。

TCP通信

    在JDK中提供了两个用于实现TCP程序的类,一个是ServerSocket类,用于表示服务端,另一个是Socket类用于表示客户端。

ServerSocket

构造方法:

ServerSocket(int port)    以端口port创建ServerSocket对象,并等待客户端的请求。

常用方法:

Socket accept() 用于等待客户端的连接,在连接之前一直处于阻塞状态。如果有客户端连接会返回一个Socket对象。 

Socket 

构造方法:

Socket(String host,int port)  用于在客户端以指定的主机名和端口号创建一个Socket对象,并向服务器发起请求连接

常用方法:

int getPort()   用于获取Socket对象与服务器连接的端口号

void close()   用于关闭close连接,结束本次通信 


public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接");

        InputStream in = socket.getInputStream();  //字节流
        OutputStream out = socket.getOutputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String str = br.readLine();
        System.out.println("客户端发消息"+str);

        br.close();
        out.close();
        in.close();
    }
}

import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",9999);
        InputStream in = socket.getInputStream();  //字节流
        OutputStream out = socket.getOutputStream();

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
        bw.write("服务器。你好");
        bw.newLine();
        bw.flush();

        bw.close();
        out.close();
        in.close();
    }
}

 

 


原文地址:https://blog.csdn.net/m0_74386799/article/details/143023927

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!