JAVA的TCP通信

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。

Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信Java为客户端提供了Socket类,为服务器端提供了ServerSocket类。

发送数据的步骤

创建客户端的 Socket 对象 (Socket)
获取输出流,写数据
释放资源
public class ClientDemo {
    public static void main(String[] args) throws IOException {
        Socket s=new Socket("202.199.6.226",12345); //建立连接的socket
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//写数据流
        String line;
        while((line=br.readLine())!=null){
            if("886".equals(line))
                break;
            bw.write(line);
            bw.newLine();
            bw.flush();
            break;
        }
        s.shutdownOutput();//告诉服务器,上传结束
        //s.shutdownInput();
        BufferedReader br2=new BufferedReader(new InputStreamReader(s.getInputStream()));
        System.out.println(br2.readLine());
//        OutputStream out=s.getOutputStream();
//        out.write("tcp hello".getBytes());
//        InputStream in=s.getInputStream();
//        byte[] bys=new byte[1024];
//        int len=in.read(bys);
//        String data=new String(bys,0,len);
//        System.out.println(data);
        s.close();//释放资源
    }
}

接收数据的步骤

创建服务器端的 Socket 对象 ( ServerSocket )
获取输入流,读数据,并把数据显示在控制台
释放资源
public class ServerDemo {
    public static void main(String[] args) throws IOException {
        ServerSocket ss=new ServerSocket(12345); //建立帮助连接的socket
        Socket s=ss.accept();  //接收连接中传过来的socket
        BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));//打开读取数据流
        String line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        bw.write("上传成功");//像客户端反馈
        bw.close();
//        InputStream is=s.getInputStream();
//        byte[] bys=new byte[1024];
//        int len=is.read(bys);
//        String data=new String(bys,0,len);
//        System.out.println("fuwuqi--  "+data);
//        OutputStream os=s.getOutputStream();
//        os.write("正常连接".getBytes());
//        s.close();
        ss.close();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值