for (i=0;name[i]!=0;i++){
fos.write(name[i]);
}
fos.write(''\n'');
}
fos.close();
}
private static void readLine(byte line[])throws IOException{
int i=0,b=0;
while((i<(lineLength-1))&&((b=System.in.read())!=''\n'')){
line[i++]=(byte)b;
}
line[i]=(byte)(0);
}
}
2.4 流
无非是两种
输出流,让我们来写的
输入流,给我们来读的
java.io包中有很多种类的输入输出流:
1.FileInputStream和FileOutputStream 节点流
2.BufferedInputStream和BufferedOutputStream 过滤流
3.DataInputStream和DataOutputStream 增强的过滤流
4.PipedInputStream和PipledOutputStream 用于线程的流
Java初学者备忘录(3)
时间:2010-12-15
掌握了流的概念,就可以开始Sockets的学习了.关于Socket的作用,昨天我已经讲了.
现在,我们将创建一个简单的通讯程序,以获得对Socket的实质性的认识.该程序包括两个部分,客户机(RemoteFileClient)和服务器(RemoteFileServer).客户机向服务器发出请求,要求读取服务器上的文件信息.服务器将响应请求,将相应的文件信息传给客户机,将相应的文件信息传给客户机.
首先我们创建RemoteFileClient类:
import java.io.*;//java.io 包提供对流进行读写的工具,也是与 TCP 套接字通信的唯一途径
import java.net.*;//java.net 包提供套接字工具。
public class RemoteFileClient {
protected String hostIp;
protected int hostPort;
protected BufferedReader socketReader;//负责读数据的对象
protected PrintWriter socketWriter;//负责写数据的对象
file&://类/的构造器有两个参数:远程主机的 IP 地址(hostIp)和端口号(hostPort)各一个.构造器将它们赋给实例变量
public RemoteFileClient(String aHostIp, int aHostPort) {
hostIp = aHostIp;
hostPort = aHostPort;
}
public static void main(String[] args) {
}
file&://连/接到远程服务器
public void setUpConnection() {
}
file&://向/远程服务器请求文件信息
public String getFile(String fileNameToGet) {
}
file&://从/远程服务器上断开
public void tearDownConnection() {
}
}
首先来实现main()
public static void main(String[] args) {
RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1", 3000);//为了方便调试,我们把本地服务器当作远程服务器
remoteFileClient.setUpConnection();//连接。不能直接使用setUpConnection,因为它是非静态变量,需要创建实例后,对实例进行引用,可以看我第一天的日记,上面写的非常详细
String fileContents =
remoteFileClient.getFile("RemoteFile.txt");//读取
remoteFileClient.tearDownConnection();//断开
System.out.println(fileContents);//输出读取内容
}
步骤非常清楚.那么我们分别看连接,读取,断开是怎么实现的
1.连接
public void setUpConnection() {
try {
Socket client = new Socket(hostIp, hostPort);//创建Socket对象
OutputStream outToServerStream=client.getOutputStream();
InputStream inFromServerStream=client.getInputStream();
socketReader = new BufferedReader(new InputStreamReader(inFromServerStream));
file&://把/Socket的InputStream包装进BufferedReader 以使我们能够读取流的行
socketWriter = new Pri
|