简体   繁体   English

如何将从TCP / IP服务器收到的数据保存到Java中的文本文件中

[英]How to save data recieved from tcp/ip server into textfile in java

I have written a small program in Socket Network in java which is communicating to server using IP address and port number. 我用Java在Socket Network中编写了一个小程序,该程序使用IP地址和端口号与服务器通信。 Now the data from the server will be received continuously. 现在,来自服务器的数据将被连续接收。 I want all this data received from server to be stored in a text file but have no idea how to do it without the application hanging. 我希望从服务器收到的所有这些数据都存储在一个文本文件中,但是不知道如何在不挂起应用程序的情况下进行操作。

Here is my code: 这是我的代码:

public class Client
{

    public Client()
    {
        try
        {
            //ceating the socket to connect tso server running on same machine binded on port no 3000
            Socket client=new Socket("localhost",3000);
            System.out.println("Client connected ");
            //getting the o/p stream of that connection
            PrintStream out=new PrintStream(client.getOutputStream());
            //sending the message to server
            out.print("Hello from client\n");
            out.flush();
            //reading the response using input stream
            BufferedReader in= new BufferedReader(new InputStreamReader(client.getInputStream()));
            System.out.println(in.readLine());
            //closing the streams
            in.close();
            out.close();

        }
        catch(Exception err)
        {
            System.err.println("* err"+err);
        }

    }

    public static void main(String a[])
    {
        new Client();
    }
}   

Thanks in advance. 提前致谢。

I have a tested code.Try this one. 我有一个经过测试的代码。尝试这个。

  StringBuffer instr = new StringBuffer();

  /** Establish a socket connetion with the server*/
  Socket connection = new Socket(address, port);

  /** Instantiate a BufferedOutputStream object */
  BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());

  /** Instantiate an OutputStreamWriter object with the optional character
   * encoding. Sending some message to server
   */
  OutputStreamWriter osw = new OutputStreamWriter(bos, "US-ASCII"); 
  String process = "SAMPLE COMMAND SENT TO SERVER"+(char)13;

  /** Write across the socket connection and flush the buffer */
  osw.write(process);
  osw.flush();

  // NOW READING THE RESPONSE FROM THE SERVER
  // I HAVE ADDED THE CHAR(13) as the delimiter here
  /** Instantiate a BufferedInputStream object for reading
  /** Instantiate a BufferedInputStream object for reading
   * incoming socket streams.
   */

  BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
  /**Instantiate an InputStreamReader with the optional
   * character encoding.
   */

  InputStreamReader isr = new InputStreamReader(bis, "US-ASCII");

  /**Read the socket's InputStream and append to a StringBuffer */
  int c;
  while((c=isr.read())!=13)
    instr.append((char)c);

  /** Close the socket connection. */
  connection.close();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM