说明:TCP是面向连接的,可靠的协议,连接前会通过三次握手确保已连接,断开连接前会通过四次握手,确认数据已全部接收才会断开连接,缺点是效率低(相对于UTP)。

在Java中,用Socket类创建客户端,ServerSocket类创建服务端

入门案例

客户端:用Socket获取输出流对象,传输数据

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class ClientEssay {
    public static void main(String[] args) throws IOException {
        // 创建Socket对象,指定IP为本地IP,端口号10000
        Socket socket = new Socket("127.0.0.1", 10000);

        // 使用Socket获取输出流对象
        OutputStream os = socket.getOutputStream();

        // 发送数据
        os.write("Hello".getBytes());

        // 关闭通道
        socket.close();
    }
}

服务端:用Socket获取输入流对象,接收数据

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerEssay {
    public static void main(String[] args) throws IOException {
        // 创建一个ServerSocket,指定端口号为10000
        ServerSocket serverSocket = new ServerSocket(10001);

        // 通过ServerSocket的端口号,接通客户端的Socket
        Socket socket = serverSocket.accept();
        // 使用Socket获取输入流对象
        InputStream is = socket.getInputStream();

        // 准备一个字节数组
        byte[] bytes = new byte[1024];

        // 读取数据
        int len = is.read(bytes);

        // 关闭通道
        serverSocket.close();

        // 将接收到的信息转换为字符串并打印
        System.out.println(new String(bytes, 0, len));
    }
}

同样,执行程序先执行服务端,再执行客户端。

注意事项

另外,有两点需要注意:

(1)未接收到数据,服务端会在accept()处阻塞

(2)连接失败,客户端会报错(这是TCP和UTP的区别,UTP连接失败不会报错)

首次发布

hezhongying.blog.csdn.net/article/det…

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com