某笔试题二(socket)

来源:互联网 发布:java访问次数 编辑:程序博客网 时间:2024/06/04 00:21

最近有在笔试和面试,做到这么一道题,简单把自己的想法写下了并实现,有不合适或者错误的地方请大家多多指正。

题目描述

现分别有一个通过socket发送文件的客户端以及一个通过socket接收文件的服务端:
a) 客户端从/tmp/src.data文件中读取文件内容,通过网络socket将文件内容发给服务端
b) 服务端监听10000端口,当10000端口接收到客户端连接请求时,从连接读取文件内容,并写入/tmp/dst.data中

试写出客户端和服务端的具体实现代码
服务端:
package test;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) throws IOException{ServerSocket server = new ServerSocket(12700);get();while(true){Socket socket =  server.accept();PrintStream ps = new PrintStream(socket.getOutputStream());//读取字节数据ps.print(get());ps.close();socket.close();}}public static String get() throws IOException {FileInputStream fis = new FileInputStream(System.getProperty("user.dir") + "/src/test/tmp/src.data");byte[] bbuf = new byte[1024];int hasReaded = 0;StringBuffer buffer = new StringBuffer();while( (hasReaded = fis.read(bbuf)) > 0){buffer.append(new String(bbuf, 0 , hasReaded));}return buffer.toString();}}

客户端:
package test;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.UnknownHostException;public class MySocket {public static void main(String[] args) throws UnknownHostException, IOException{Socket socket = new Socket("127.0.0.1", 12700);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));writeTo(br.readLine());socket.close();}public static void writeTo(String str) throws IOException{FileOutputStream fileOutputStream = new FileOutputStream("dst.data");for(int i = 0;i < str.length();i++){System.out.println(str.charAt(i));fileOutputStream.write((byte)str.charAt(i));}fileOutputStream.close();}}


原创粉丝点击