java 利用socket机制从客户端读取从服务器发来的消息
客户端读取服务器发来的消息(相应报文+应答内容),把相应报文(HTTP/1.0200OK,Content-Type:text/html,只打这两行就行)显示在客户端的命令...
客户端读取服务器发来的消息(相应报文+应答内容),把相应报文(HTTP/1.0 200 OK,Content-Type: text/html,只打这两行就行)显示在客户端的命令行,正式的内容(html,txt,jpg这三种)作为文件保存在客户端,该怎么写呢? 我对java各种流什么的很迷糊 不会写 大家帮我写一个getResponse()函数吧,实现上面说的功能
展开
2013-09-01
展开全部
Socket s = new Socket(InetAddress.getLocalHost(), 8080);
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
StringBuffer sb = new StringBuffer();
sb.append("GET /HttpStream/gb2312.jsp HTTP/1.1\r\n");
sb.append("Host: localhost:8088\r\n");
sb.append("Connection: Keep-Alive\r\n");
//注,这是关键的关键,这里一定要一个回车换行,表示消息头完,不然服务器会等待
sb.append("\r\n");
osw.write(sb.toString());
osw.flush(); 定义一个读流的方法 private static String readLine(InputStream is) throws IOException {
ArrayList lineByteList = new ArrayList();
byte readByte;
int total = 0;
do {
readByte = (byte) is.read();
lineByteList.add(Byte.valueOf(readByte));
} while (readByte != 10);
byte[] tmpByteArr = new byte[lineByteList.size()];
for (int i = 0; i < lineByteList.size(); i++) {
tmpByteArr[i] = ((Byte) lineByteList.get(i)).byteValue();
}
lineByteList.clear();
return new String(tmpByteArr);
}
} 对于文件的保存就是文件流的操作 这里的buffer就是你往文件里写的内容。 System.out.print("输入要保存文件的内容:");
int count, n = 512;
byte buffer[] = new byte[n];
// 读取标准输入流
count = is.read(buffer);//这里的is就是socket获取到的
// 创建文件输出流对象
FileOutputStream os = new FileOutputStream("WriteFile.txt");
// 写入输出流
os.write(buffer, 0, count);
// 关闭输出流
os.close();
System.out.println("已保存到WriteFile.txt!");
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
StringBuffer sb = new StringBuffer();
sb.append("GET /HttpStream/gb2312.jsp HTTP/1.1\r\n");
sb.append("Host: localhost:8088\r\n");
sb.append("Connection: Keep-Alive\r\n");
//注,这是关键的关键,这里一定要一个回车换行,表示消息头完,不然服务器会等待
sb.append("\r\n");
osw.write(sb.toString());
osw.flush(); 定义一个读流的方法 private static String readLine(InputStream is) throws IOException {
ArrayList lineByteList = new ArrayList();
byte readByte;
int total = 0;
do {
readByte = (byte) is.read();
lineByteList.add(Byte.valueOf(readByte));
} while (readByte != 10);
byte[] tmpByteArr = new byte[lineByteList.size()];
for (int i = 0; i < lineByteList.size(); i++) {
tmpByteArr[i] = ((Byte) lineByteList.get(i)).byteValue();
}
lineByteList.clear();
return new String(tmpByteArr);
}
} 对于文件的保存就是文件流的操作 这里的buffer就是你往文件里写的内容。 System.out.print("输入要保存文件的内容:");
int count, n = 512;
byte buffer[] = new byte[n];
// 读取标准输入流
count = is.read(buffer);//这里的is就是socket获取到的
// 创建文件输出流对象
FileOutputStream os = new FileOutputStream("WriteFile.txt");
// 写入输出流
os.write(buffer, 0, count);
// 关闭输出流
os.close();
System.out.println("已保存到WriteFile.txt!");
2013-09-01
展开全部
服务端PrintWriter out = new PrintWriter(Socket.getOutputStream());out.print("要在客户端获取的内容");out.flush();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询