栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习之路(六十)| (接上文五十九)TCP网络编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习之路(六十)| (接上文五十九)TCP网络编程

各自努力,最高处见!加油!

TCP网络编程
    • socket TCP 网络上传图片
      • 服务器端代码
      • 客户端代码
      • 工具类文件代码
    • netstat指令

socket TCP 网络上传图片

服务器端代码
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class FileUploadingServer {
    public static void main(String[] args) throws IOException {
        byte[] buf=new byte[1024];
        int readLen=0;
        String filePath="D:\Java_code\InternetLearn\src\library.jpg";
        FileOutputStream fileOutputStream = new FileOutputStream(filePath);
        ServerSocket serverSocket=new ServerSocket(8888);
        System.out.println("服务端,在8888端口监听,等待连接。。。。");



        Socket socket = serverSocket.accept();
        InputStream inputStream = socket.getInputStream();
        while ((readLen=inputStream.read(buf))!=-1)
        {
            fileOutputStream.write(buf,0,readLen);
        }

        System.out.println("服务器接收到图片!发送已接受指令给客户端!");

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("收到图片".getBytes());


        inputStream.close();
        fileOutputStream.close();
        outputStream.close();
        socket.close();
    }
}
客户端代码
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class uploadingClient {
    public static void main(String[] args) throws Exception {
        //客户端读取本地的文件,传入输入流中
        String filePath="E:\library.jpg";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath));//为什么要这一步?
        byte[] bytes = StreamUtils.streamToByteArray(bufferedInputStream);//调用题目所给的库,将输入流中的数据转换成字节数组。

        Socket socket = new Socket(InetAddress.getLocalHost(),8888);//连接到本机的8888端口
        OutputStream outputStream = socket.getOutputStream();//获取到一个字节流
        outputStream.write(bytes);
        socket.shutdownOutput();
        System.out.println("客户端文件发送完毕,准备接收服务器端反馈!");

        byte[] readBytes=new byte[1024];
        InputStream inputStream = socket.getInputStream();
        String s = StreamUtils.streamToString(inputStream);
        System.out.println("服务器端回复:"+s);


        bufferedInputStream.close();
        outputStream.close();
        inputStream.close();
        socket.close();
    }
}
工具类文件代码
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


public class StreamUtils {
	
	public static byte[] streamToByteArray(InputStream is) throws Exception{
		ByteArrayOutputStream bos = new ByteArrayOutputStream();//创建输出流对象
		byte[] b = new byte[1024];
		int len;
		while((len=is.read(b))!=-1){
			bos.write(b, 0, len);	
		}
		byte[] array = bos.toByteArray();
		bos.close();
		return array;
	}
	
	
	public static String streamToString(InputStream is) throws Exception{
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		StringBuilder builder= new StringBuilder();
		String line;
		while((line=reader.readLine())!=null){ //当读取到 null时,就表示结束
			builder.append(line+"rn");
		}
		return builder.toString();
		
	}
}
netstat指令
  1. netstat-an可以查看当前主机网络情况,包括端口监听情况和网络连接情况
  2. netstat-an | more可以分页显示
  3. 要求在dos控制台下运行(win键+R快捷键,输入cmd命令行)


外部地址:连接该端口的外部程序ip地址。
状态:LISTENING监听中,ESTABLISHED(established)已连接
Ctrl+C退出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号