TCPdemo2

package day1;

import jdk.internal.util.xml.impl.Input;
import org.junit.Test;

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

public class TCPdemo2 {
    //从客户端发送文件到服务器端,服务器端保存并返回“发送成功”并关闭连接
    @Test
    public void server() throws IOException {
        ServerSocket ss=new ServerSocket(9090);
        Socket socket=ss.accept();
        InputStream is=socket.getInputStream();

        //接收文件并保存
        FileOutputStream fos=new FileOutputStream(new File("der2.jpg"));
        byte[] buf=new byte[30];
        int len;
        while((len=is.read(buf))!=-1){
            fos.write(buf,0,len);
        }

        OutputStream os=socket.getOutputStream();
        os.write("服务器端接收图片成功".getBytes());

        fos.close();
        is.close();
        socket.close();
        ss.close();
        os.close();
    }

    @Test
    public void client() throws IOException {
        Socket socket=new Socket("127.0.0.1",9090);
        OutputStream os=socket.getOutputStream();

        FileInputStream fis=new FileInputStream(new File("der.jpg"));
        byte[] buf=new byte[30];
        int len;
        while((len=fis.read(buf))!=-1){
            os.write(buf,0,len);
        }
        //结束输出,避免server阻塞
        socket.shutdownOutput();

        InputStream is=socket.getInputStream();
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        byte[] buf1=new byte[20];
        int len1;
        while((len1=is.read(buf1))!=-1){
            baos.write(buf1,0,len1);
        }
        System.out.println(baos.toString());

        fis.close();
        os.close();
        socket.close();
        baos.close();
    }

}
posted @   fighterk  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示