JAVA实现远程文件读取!

王朝java/jsp·作者佚名  2008-05-31
宽屏版  字体: |||超大  

客户端

=============================================

import Java.io.*;

import java.net.*;

public class RemoteFileClient

{

protected String hostIp;

protected int hostPort;

protected BufferedReader socketReader;

protected PrintWriter socketWriter;

public static void main(String[] args)

{

RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1", 3000);

remoteFileClient.setUpConnection();

String fileContents =remoteFileClient.getFile("E:\RemoteFile.txt");

remoteFileClient.tearDownConnection();

System.out.println(fileContents);

}

//==========================

public RemoteFileClient(String aHostIp, int aHostPort)

{

hostIp = aHostIp;

hostPort = aHostPort;

}

//===========================

public void setUpConnection()

{

try

{

Socket client = new Socket(hostIp, hostPort);

socketReader = new BufferedReader(

new InputStreamReader(client.getInputStream()));

socketWriter = new PrintWriter(client.getOutputStream());

} catch (UnknownHostException e) {

System.out.println("Error setting up socket connection: unknown host at " + hostIp + ":" + hostPort);

} catch (IOException e) {

System.out.println("Error setting up socket connection: " + e);

}

}

//=============================

public String getFile(String fileNameToGet)

{

StringBuffer fileLines = new StringBuffer();

try

{

socketWriter.println(fileNameToGet);

socketWriter.flush();

String line = null;

while ((line = socketReader.readLine()) != null)

fileLines.append(line + "

");

}

catch (IOException e)

{

System.out.println("Error reading from file: " + fileNameToGet);

}

return fileLines.toString();

}

//========================

public void tearDownConnection()

{

try

{

socketWriter.close();

socketReader.close();

}

catch (IOException e)

{

System.out.println("Error tearing down socket connection: " + e);

}

}

//=========================

}

=================================================================

服务器端

=========

import java.io.*;

import java.net.*;

public class RemoteFileServer {

protected int listenPort = 3000;

public static void main(String[] args)

{

RemoteFileServer server = new RemoteFileServer();

server.acceptConnections();

}

public void acceptConnections() {

try {

ServerSocket server = new ServerSocket(listenPort);

Socket incomingConnection = null;

while (true) {

incomingConnection = server.accept();

handleConnection(incomingConnection);

}

} catch (BindException e) {

System.out.println("Unable to bind to port " + listenPort);

} catch (IOException e) {

System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);

}

}

public void handleConnection(Socket incomingConnection)

{

try

{

OutputStream outputToSocket = incomingConnection.getOutputStream();

InputStream inputFromSocket = incomingConnection.getInputStream();

BufferedReader streamReader =

new BufferedReader(new InputStreamReader(inputFromSocket));

FileReader fileReader = new FileReader(new File(streamReader.readLine()));

BufferedReader bufferedFileReader = new BufferedReader(fileReader);

PrintWriter streamWriter =

new PrintWriter(incomingConnection.getOutputStream());

String line = null;

while ((line = bufferedFileReader.readLine()) != null)

{

streamWriter.println(line);

}

fileReader.close();

streamWriter.close();

streamReader.close();

}

catch (Exception e)

{

System.out.println("Error handling a client: " + e);

}

}

}

===========================================

输出结果:

---------------看!我读取了E:\RemoteFile.txt啊!

================================================

Wrapping up the server

Before we move on to another, more practical example, let´s review the steps to create and

use a ServerSocket:

1. Instantiate a ServerSocket with a port on which you want it to listen for incoming

client connections (throws an Exception if there´s a problem).

2. Call accept() on the ServerSocket to block while waiting for connection.

3. Get the streams on that underlying Socket for reading and writing.

4. Wrap the streams as necessary to simplify your life.

5. Read from and write to the Socket.

6. Close your open streams (and remember, never close your Reader before your Writer).

You can find the complete code listing for RemoteFileServer at Code listing for

RemoteFileServer on page 33.

===================================

Wrapping up the server

Before we move on to another, more practical example, let´s review the steps to create and

use a ServerSocket:

1. Instantiate a ServerSocket with a port on which you want it to listen for incoming

client connections (throws an Exception if there´s a problem).

2. Call accept() on the ServerSocket to block while waiting for connection.

3. Get the streams on that underlying Socket for reading and writing.

4. Wrap the streams as necessary to simplify your life.

5. Read from and write to the Socket.

6. Close your open streams (and remember, never close your Reader before your Writer).

==================================

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有