JAVA实现远程文件读取!



importjava.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).
==================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值