首页 > 编程语言 >java网络编程示例

java网络编程示例

时间:2023-05-04 23:23:55浏览次数:58  
标签:java socket 示例 编程 baos close new null

1.client

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class TcpClientDemo {
    public static void main(String[] args) {
        InetAddress byName = null;
        Socket socket = null;
        OutputStream os = null;
        FileInputStream fis = null;
        InputStream is = null;
        ByteArrayOutputStream baos = null;
        try {
            // 1. 获取服务器地址和端口
            byName = InetAddress.getByName("127.0.0.1");
            int port = 9999;

            // 2. 创建socket
            socket = new Socket(byName, port);

            // 3. 读取文件
            os = socket.getOutputStream();
            fis = new FileInputStream(new File("example.jpg"));
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }

            // 4. 通知服务器传输结束
            socket.shutdownOutput();

            // 5. 接受服务器传输完毕会话后,才断开连接
            is = socket.getInputStream();
            baos = new ByteArrayOutputStream();
            int len2;
            byte[] buffer2 = new byte[1024];
            while ((len2 = is.read(buffer2)) != -1) {
                baos.write(buffer2, 0, len2);
            }
            System.out.println(baos);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                os.close();
                fis.close();
                is.close();
                baos.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
}

2.server

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;


public class TcpServerDemo {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        InputStream is = null;
        Socket socket = null;
        OutputStream os = null;
        FileOutputStream baos = null;

        try {
            // 1. 创建server端
            serverSocket = new ServerSocket(9999);

            // 2.阻塞式监听
            socket = serverSocket.accept();

            // 3.读取客户端的消息
            is = socket.getInputStream();

            // 4.管道流
            baos = new FileOutputStream(new File("receive.jpg"));
            // 读入的缓冲区
            byte[] buffer = new byte[1024];
            int len;
            while ((len = is.read(buffer)) != -1) {
                baos.write(buffer, 0, len);
            }

            // 通知客户端传输结束
            os = socket.getOutputStream();
            os.write("transmission complete.".getBytes(StandardCharsets.UTF_8));

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                baos.close();
                is.close();
                os.close();
                socket.close();
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

执行结果:
image

标签:java,socket,示例,编程,baos,close,new,null
From: https://www.cnblogs.com/wwwgo/p/17372853.html

相关文章

  • 编程打卡: C++ 语言程序设计
    #include<iostream>usingnamespacestd;classComplex{protected:doublereal;doubleimag;public:Complex(doubler=0.0,doublei=0.0):real(r),imag(i){};Complexoperator+(constComplex&c){......
  • IntelliJ IDEA 2022.3.2 最新专业版 Windows系统下安装, 一直可用,业界公认的最好的jav
    ​第三步: IDEA安装补丁1、补丁下载地址: 下载链接2、补丁安装流程下载并安装IDEA后,先不启动IDEA下载补丁程序并解压并放置任意目录执行脚本install-current-user.vbs​ 双击执行install-current-user.vbs脚本,等待过程大概10-30秒,如看到弹框提示Done......
  • JAVA8新特性
    JAVA8新特性Lambda表达式只有函数式接口才能使用Lambda表达式​ Lambda表达式是JDK8中的一个语法糖,它可以对某些匿名内部类的写法进行简化,它是函数式编程思想的一个重要体现,让我们不用关注是什么对象,而是更关注我们对数据进行了什么操作。核心原则​ 可推导可省略基本格......
  • java基于springboot+vue的宿舍管理系统、学生宿舍管理系统、高校宿舍管理系统,附源码+
    1、项目介绍java基于springboot+vue的宿舍管理系统、学生宿舍管理系统、高校宿舍管理系统,实现管理员:首页、个人中心、公告信息管理、院系管理、班级管理、学生管理、宿舍信息管理、宿舍安排管理、卫生检查管理、报修信息管理、报修处理管理、缴费信息管理,学生;首页、个人中心、公......
  • 命令行编译和执行java代码
    虽然现在IDE很强大又很智能,但是平常随意写点练手的代码的时候,直接在命令行中使用vim和java命令更为方便快捷,可以做到无鼠标纯键盘的操作。首先保证将java相关指令添加到了环境变量中;1.编译class文件:javac-d./Test.java编译好的class文件会放置到环境当前目录(./)中。-d......
  • 20基于java的科研管理系统设计与实现
    背景及意义目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方......
  • 2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
    2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。答案2023-05-04:这段代码实现了使用libswscale库进行视频缩放的功能。下面是程序的主要流程:1.获取命令行参数,包括输出文件名和目标图像大小。2.解析目标图像大小,生成指定大小的输出文件。3.创建缩......
  • java8新特性理解
    一些关于java8新特性理解引例在java中,考虑实现按学号顺序对学生List进行排序的功能。一.java8以前的实现方式:匿名内部类如果不使用java8的新特性,我们实现该功能通常会使用匿名内部类的方法。importjava.util.*;;classStudent{privateintid;privateStringn......
  • 编程一小时2023.5.4
    1.#include<iostream>usingnamespacestd;inta[501][501];intmain(){intn,sum=0;cin>>n;for(inti=1;i<=n;i++)for(intj=1;j<=n;j++)cin>>a[i][j];for(inti=n;i>=2;i......
  • Java String 类
    String类创建字符串最简单的创建方法:Stringstr="Cnblogs";用构造函数创建:Stringstr1=newString("Cnblogs"); String创建的字符串存储在公共池中,而new创建的字符串对象在堆上;Strings1="Cnblogs";//String直接创建Strings2=""Cnblogs;//String......