浅谈TCP

TCP:

1.TCP在通讯的时候在client和server两端各建立一个Socket,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。

2.java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。

3.java为客户提供了Socket类,为服务器端提供了ServerSocket类。

TCP:客户端

1.创建客户端的Socket对象

2.引入输出流来写数据

3.如果想要的到服务端的反馈 需要创建byte数组用来接收服务端的反馈

4.释放资源

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

public class Cilent {
    public static void main(String[] args) throws IOException {
        //创建Socket对象 写入地址和端口号
        Socket s = new Socket("127.0.0.1",8876);
        //创建要写入的数据
        String str = "努力学java";
        //通过输出流来进行数据的写入
        OutputStream os = s.getOutputStream();
        os.write(str.getBytes());
        //引入输入流用来接收服务端发来的数据
        InputStream is = s.getInputStream();
        //使用一个byte的数组作为一个缓冲区
        byte[] b = new byte[1024];
        //读操作的返回值是int类型 所以定义一个int类型变量
        int ch =0;
        //read(byte[] b) 这个方法是先规定一个数组长度,将这个流中的字节缓冲到数组b中,
        // 返回的这个数组中的字节个数,这个缓冲区没有满的话,则返回真实的字节个数,到未尾时都返回-1
        while((ch = is.read(b))!=-1){
            System.out.println(new String(b,0,ch));
        }
        //释放资源
        is.close();
        s.close();
        os.close();
    }
}

 TCP:服务端

1.创建服务端的Socket对象(ServerSocket ServerSocket(int port)

2.监听客户端连接,返回一个Socket对象 Socket accept()

3.获取输入流,读取客户端发来的数据,并显示在控制台上

4.释放资源

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

public class Server {
    public static void main(String[] args) throws IOException {
        //创建Socket对象
        ServerSocket ss = new ServerSocket(8876);
        //ServerSocket的accept方法返回值类型是Socket
        Socket s = ss.accept();
        //使用一个byte的数组作为一个缓冲区
        byte[] bytes = new byte[1024];
        //输入流用来接收数据
        InputStream is = s.getInputStream();
        //读取数据
        int ch = is.read(bytes);
        //通过创建字符串对象来进行数据的输出
        System.out.println("接收到的数据是:"+new String(bytes,0,ch));
        //创建输出流用来给客户端反馈信息
        OutputStream os = s.getOutputStream();
        os.write("接收到了,感谢".getBytes());
        //释放资源
        is.close();
        os.close();
        ss.close();
        s.close();
    }
}

 运行结果:运行时先运行服务端accept来接收数据 不然就会发生堵塞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值