TCP协议接收数据的步骤:

A:创建接收数据的Socket对象

  创建对象的时候要指定端口

B:监听客户端连接

    等待客户端连接

C:获取Socket对象的输入流(字节流)

D:读数据,并显示在控制台

E:释放资源

服务器:

public class FileServerDemo {

    public static void main(String[] args) throws IOException {
        //创建服务器对象
        ServerSocket ss = new ServerSocket(8080);
        //监听客户端连接
        Socket s = ss.accept();
        //包装通道内的输入流
        BufferedInputStream bis = new BufferedInputStream(
                s.getInputStream());
        //把数据写入文件
        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("C:\\Users\\MA\\Desktop\\IOtest\\copy.jpg"));
        byte[] bys = new byte[1024];
        int len = 0;
        while((len = bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }
        //把通道内的输出流包装
        BufferedWriter write = new BufferedWriter(new OutputStreamWriter(
                s.getOutputStream()));
        write.write("文件上传成功");
        write.newLine();
        write.flush();
        //释放资源
        bos.close();
        s.close();
        ss.close();
    }
}

TCP协议发送数据的步骤:

A:创建发送数据的Socket对象

  创建对象的时候要指定主机和端口

B:获取Socket对象的输出流(字节流)

C:写数据

D:释放资源

客户端:

public class FileClientDemo {

    public static void main(String[] args) throws IOException {
        //创建客户端对象
        Socket s = new Socket("172.24.60.182",8080);
        //读取文件的数据
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\MA\\Desktop\\电路指导书\\QQ图片20180627212519.jpg"));
        //把通道内的输出流包装
        BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
        byte[] bys = new byte[1024];
        int len = 0;
        while((len=bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }
        //给服务器一个反馈
        s.shutdownOutput();//禁用输出流
        //获取服务器的反馈信息
        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = reader.readLine();
        System.out.println("client:"+data);
        bis.close();
        s.close();
    }
}

java-TCP协议发送和接收数据的更多相关文章

  1. java实现http协议发送和接收数据

    public void sendMessage() throws Exception { System.out.println("调用servlet开始=================&q ...

  2. Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

    1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...

  3. 网络编程--使用TCP协议发送接收数据

    package com.zhangxueliang.tcp; import java.io.IOException; import java.io.OutputStream; import java. ...

  4. 【Java】学习路径56-TCP协议 发送、接收

    与UDP不同的是,TCP协议使用的是Socket,而不是DatagramSocket,这是要作区分的. 构造Socket对象的时候,可以直接指定ip地址与端口号.此时需要抛出异常. import ja ...

  5. 【转】使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?

    使用TCP协议连续传输大量数据时,是否会丢包,应如何避免? 比如发送文件.记得有人提过可能会发生什么堆栈溢出.怎样避免呢?是不是可以收到数据后发送确认包,收到确认包后再继续发送.或是发送方发送了一些数 ...

  6. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  7. Netty——高级发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  8. netty发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  9. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据

    假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...

随机推荐

  1. C++: 基于四叉树数据结构的自适应网格(初探)

    C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...

  2. 数据库MHA故障分析

    一.故障分析 1.MHA故障以后是否正常:不正常 2.如果master恢复了?MHA还能自动恢复吗?:不能 3.主从恢复删除此文件 rm    saved_master_binlog_from_192 ...

  3. Python小知识之对象的比较

    好久不见 国庆回了趟老家,躺平了10天.作息时间基本和小学生差不多,8.9点就睡了, 那滋味别提多舒服了.时间也和小时候过得一样慢了...长时间不更新,还是不行滴,粉都快掉没了. 今天就结合日常生活的 ...

  4. Java初步学习——2021.10.11每日总结,第六周周一

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天继续学习菜鸟教程Java实例 字符串 9.字符串小写转大写--toUpperCase方法 public class Ma ...

  5. 使用Python写词云数据可视化

    词云的应用场景 会议记录 海报制作 PPT制作 生日表白 数据挖掘 情感分析 用户画像 微信聊天记录分析 微博情感分析 Bilibili弹幕情感分析 年终总结 安装本课程所需的Python第三方模块 ...

  6. centos无法建立ssl连接

    在centos下使用wget安装mysql5.7时,提示无法建立ssl连接 查阅资料,在命令wget后加上 --no-check-certificate也还是无法建立SSL连接. 后来,觉得可能是由于 ...

  7. Mysql双主双从高可用集群的搭建且与MyCat进行整合

    1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...

  8. Java(5)输入和输出

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201515.html 博客主页:https://www.cnblogs.com/testero ...

  9. NOIP模拟80

    学考+OJ改名祭 T1 邻面合并 解题思路 状压 DP ...(于是贪心竟然有 60pts 的高分?? code) 状态设计的就非常妙了,如果状态是 1 就表示是一个分割点也就是一个矩形的右边界. 那 ...

  10. linux Samba 搭建

    Samba is a free and open-source software package that provides seamless file and print services to S ...