socket编程--客户端发送文件至服务端

这是之前做过的一个笔试题,最近闲来无事,动手试着写了一下,发现自己对IO流的使用还是不够,仍需加强!!!

题干:要求一个客户端通过socket编程将本地的一个文件发送到服务端,服务端接收完毕后退出程序

服务端代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *	@FileName:Server.java
 *	@Time:2016-10-15
 */
public class Server {
	
	public static void main(String[] args) throws IOException{
		//1.创建服务端
		ServerSocket ss = new ServerSocket(10000);
		//接收客户端
		Socket socket = null;
		
		//2.获取输出流,向文件中写入内容
		File f = new File("d:/newIn.txt");
		FileOutputStream out = new FileOutputStream(f);
		String str = null;
		//byte buffs[] = new byte[1024];
		//int length = 0;
		
		//3.获取输入流
		InputStream in = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		String nextLine = System.getProperty("line.separator"); 
		while(true){
			socket = ss.accept();
			in = socket.getInputStream();
			isr = new InputStreamReader(in);
			br = new BufferedReader(isr);
			while((str = br.readLine())!=null){
				System.out.println("接收到的数据:"+str);
				out.write((str+nextLine).getBytes());
				out.flush();
			}
			out.close();
			System.exit(0);
		}
		
		
		
	}
}

客户端代码:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

/**
 *	@FileName:SocketAndServer.java
 *	@Time:2016-10-15
 */
public class Client {
	
	public static void main(String[] args) throws IOException, InterruptedException {
		//1.创建socket,连接到服务端
		Socket socket = new Socket("localhost",10000);
		
		//2.获取输出流,向服务端发送信息
		//字节输出流
		OutputStream os = socket.getOutputStream();
		//将输出流包装成打印流
		PrintWriter pw = new PrintWriter(os);

		//3.获取输入流,读取文件中的信息
		//文件输入流
		InputStream in = new FileInputStream("e://place.txt");
		InputStreamReader isr = new InputStreamReader(in,"GBK");
		BufferedReader br = new BufferedReader(isr);
		String str = null;
		
		while((str = br.readLine())!=null){
			System.out.println("文件读取内容为: "+str);
			pw.write(str+"\r\n");
			pw.flush();
			Thread.sleep(1000);
		}
		
		pw.close();
		br.close();
		in.close();
		os.close();
	}
	
	
}


程序运行截图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值