2017-08-29 35 views
0

我想创建一个套接字连接,然后将文件中的值作为流传递给套接字。使用PrintStream和FileOutputStream从文件传递数据到套接字

我也设法将数据从PrintStream的传递到插座,

socketInput= "1234,112,1121" 
    val ss = new ServerSocket(4141) 
    val sock = ss.accept() 
    val is = new BufferedInputStream(sock.getInputStream) 
    val os =new PrintStream(new BufferedOutputStream(sock.getOutputStream)) 
    os.println(socketInput) 
    os.flush() 
    sock.close() 

现在,而不是提供直接输入从打印流套接字我需要从csv文件提供。 当我读到FileOutputStream时,它用于将数据写入文件。 如何,我们可以从文件中读取,并传递到套接字。

+0

所以你的问题是如何从文件中读取行? – neuhaus

+0

@neuhaus所以问题是如何从文件本身提供输入流而不是打印流。 – Freeman

回答

0

如果您的问题是如何读取文件的内容并通过套接字发送和接收它,您可以使用这些示例。首先,你应该运行Server.java,之后请改变Client.java文件的路径和名称,最后运行客户端。

Server.java

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Server { 
    public static void main(String args[]) { 
     System.out.println("Server is ready:"); 
     int SERVER_PORT = 7005; 
     ServerSocket serverSocket = null; 
     Socket conn = null; 
     try { 
      serverSocket = new ServerSocket(SERVER_PORT, 50); 
      while (true) { 
       conn = serverSocket.accept(); 
       BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       String line; 
       while ((line = in.readLine()) != null) { 
        System.out.println(line); 
        if(line.indexOf("END") > -1) { 
         in.close(); 
         break; 
        } 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

Client.java

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.Socket; 

public class Client { 
    public static void main(String[] args) { 
     int SERVER_PORT = 7005; 
     try { 
      Socket conn = new Socket("localhost",SERVER_PORT); 
      PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream())); 
      BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("/home/mohammadmehdi/development/eclipse/neonWorkSpace/javaTest/SocketTest/src/temp.txt"), "UTF-8")); 
      String line; 
      while ((line = in.readLine()) != null) { 
       out.println(line); 
       out.flush(); 
      } 
      out.close(); 
      in.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
相关问题