2017-08-29 83 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(); 
     } 
    } 
} 
相關問題