网络编程——TCP

网络编程–TCP
TCP编程:TCP是一种可靠的,基于连接的网络协议,它是面向字节流的,即从一个进程到另一个进程的二进制序列。一条TCP连接需要两个端点,这两个端点需要分别建立各自的套接字。通常一方用于发送请求和数据(称为客户端),另一方用于监听网络请求和数据(称为服务端)。

两端通信的步骤:
1、开启服务器程序,等待客户端程序的连接
2、客户端主动连接服务器,连接成功才可以进行通信。
在Java中,提供了两个类用于实现TCP通信程序:
1、服务器:java.net.ServerSocket类。创建ServerSocket对象,开启一个服务,等待可客户端的连接请求
创建ServerSocket对象调用构造函数时,要写入端口号。

public class serverSocket {
    public static void main(String[] args) throws IOException {
        //创建ServerSocket对象,写入端口号
        ServerSocket you=new ServerSocket(1234);
        //2.使用ServerSocket对象中的方法accept.获取到请求的客户端对象Socket
        Socket my = you.accept();
        //使用getInputStream()方法读取
        InputStream inputStream = my.getInputStream();
        //使用数据流,方便数据的读取
        DataInputStream in = new DataInputStream(inputStream);
        System.out.println(in.readUTF());
        OutputStream outputStream = my.getOutputStream();
        DataOutputStream out = new DataOutputStream(outputStream);
        out.writeUTF("你好,收到了");
        System.out.println("1234");
        //释放资源
        you.close();
        my.close();
    }
}

2、客户端:java.net.Socket类。创建Socket对象,向服务端发送连接请求,服务端响应请求,然后两者建立连接。
创建Socket对象调用构造函数时,要写入服务器的名称或者服务器的IP地址和端口号。

public class socket {
    public static void main(String[] args) throws IOException {
        //创建Socket对象并写入服务器主机的名称/服务器的IP地址
        Socket my=new Socket("localhost",1234);
        //使用对象流读取和写入数据
        OutputStream outputStream = my.getOutputStream();
        DataOutputStream out = new DataOutputStream(outputStream);
        out.writeUTF("你好");
        InputStream inputStream = my.getInputStream();
        DataInputStream in = new DataInputStream(inputStream);
        System.out.println(in.readUTF());
        System.out.println("4321");
        //释放资源
        my.close();
    }
}

结果如下:
先运行服务器类,开启服务器,等待客户端发送请求在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Socket对象和ServerSocket对象写入的端口号要一致,不然连接。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值