TCP服务端发送数据

本文详细探讨了在TCP服务端如何有效地发送数据,包括建立连接、数据打包与发送、错误处理以及保持连接稳定的方法。通过实例代码解析,帮助读者理解TCP协议在服务器端数据传输中的核心操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 服务端
 * 负责发送数据
 */
public class SocketServerTest {
    private static final int PORT = 5359;

    public static void main(String[] args) {
        ServerSocket server = null;
        Socket socket = null;
        DataOutputStream out = null;
        try {
            server = new ServerSocket(PORT);
            //等待客户端 连接端口
            socket = server.accept();
            out = new DataOutputStream(socket.getOutputStream());
            //readFileByLines(out, "f://test.txt", 1000);
            readFileByLines(out, args[0], Long.valueOf(args[1]));
        } catch (Exception e) {
            e.printStackTrace();
            try {
                out.flush();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }


    /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     */
    public static void readFileByLines(DataOutputStream out, String fileName, long time) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            //System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                Thread.sleep(time);
                byte[] bytes = tempString.getBytes();
                byte[] temp = new byte[bytes.length + 2];
                temp[0] = 2;
                temp[temp.length - 1] = 13;
                ArrayUtil.arraycopy(bytes, 0, temp, 1, bytes.length);
                out.write(temp);
                out.flush();
                // 显示行号
                //System.out.println("line " + line + ": " + tempString);
                line++;
            }
            reader.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (InterruptedException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                    System.out.println(e1.getMessage());
                }
            }
        }
    }
}
d打包成jar包后,用java -jar jar位置 参数1(文件位置) 参数2(间隔时间)启动

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值