ntWriter(outToServerStream);
file&://把/Socket的OutputStream包装进PrintWriter 以使我们能够发送文件请求到服务器
} catch (UnknownHostException e) {
System.out.println("Error setting up socket connection: unknown host at " + hostIp + ":" + hostPort);
file&://对/Socket对象创建错误的异常处理
} catch (IOException e) {
System.out.println("Error setting up socket connection: " + e);
file&://对/IO错误的异常处理
}
}
Java初学者备忘录(4)
时间:2010-12-15
2.读取
public String getFile(String fileNameToGet) {
StringBuffer fileLines = new StringBuffer();//StringBuffer对象也是String对象,但是比它更灵活,这里是用来存放读取内容的
try {
socketWriter.println(fileNameToGet);
socketWriter.flush();//文件存放地址输出到socketWriter中,然后清空缓冲区,让这个地址送到服务器中去
String line = null;
while ((line = socketReader.readLine()) != null)
fileLines.append(line + "\n");
file&://既/然已经发送到服务器去了,那我们都要等待响应,这里的程序就是等待服务器把我们所需要的文件内容传过来
} catch (IOException e) {
System.out.println("Error reading from file&: " + fileNameToGet);
}
return fileLines.toString();//别忘了把buffer中的内容转成String再返回
}
3.断开
public void tearDownConnection() {
try {
socketWriter.close();
socketReader.close();
} catch (IOException e) {
System.out.println("Error tearing down socket connection: " + e);
}
}
tearDownConnection() 方法只别关闭我们在 Socket 的 InputStream 和 OutputStream 上创建的 BufferedReader 和 PrintWriter。这样做会关闭我们从 Socket 获取的底层流,所以我们必须捕捉可能的 IOException
好,现在可以总结一下客户机程序的创建步骤了
1.用要连接的机器的IP端口号实例化Socket(如有问题则抛出 Exception)。
2.获取 Socket 上的流以进行读写.
3.把流包装进 BufferedReader/PrintWriter 的实例.
4.对 Socket 进行读写.具体说来,就是在Writer上传送文件地址信息给服务器,在Reader上读取服务器传来的文件信息
Java初学者备忘录(5)
时间:2010-12-15
5.关闭打开的流。
下面是RemoteFileClient 的代码清单
import java.io.*;
import java.net.*;
public class RemoteFileClient {
protected BufferedReader socketReader;
protected PrintWriter socketWriter;
protected String hostIp;
protected int hostPort;
public RemoteFileClient(String aHostIp, int aHostPort) {
hostIp = aHostIp;
hostPort = aHostPort;
}
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 + "\n");
} catch (IOException e) {
System.out.println("Error reading from file&: " + fileNameToGet);
}
|