急求把网络输入输出流上的数据存为本地二进制文件的方法
急求把网络socket输入输出流上的数据存为本地二进制文件的方法,就像MSN、QQ等聊天软件的聊天记录的功能。
[解决办法]
过程就是:
1、得到相应的网络输入流
InputStream is = ***.getInputStream();
2、本地创建一个输出流
FileOutputStream out = new FileOutputStream(file);
3、写到本地
while ((i = is.read()) != -1) {
out.write(i);
}
out.flush();
[解决办法]
1 楼的方法差不多了
[解决办法]
1楼的写法就是二进制文件
[解决办法]
InputStream Is,is = null;
[解决办法]
InputStream Is,is = null; 没有赋值
[解决办法]
简单的写了一个程序,估计能完成要求。有一些细节方面没有做处理。
package houlei.test;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;/** * 推荐使用两个线程来处理,本代码是单线程的程序。 * * 该类创建于 2009-6-12 上午02:11:49 * @version 1.0.0 * @author 侯磊 */public class RecordIOInfo { public static final String Exit = "exit"; public static void main(String[] args) throws Exception{ Socket socket = new Socket("192.168.180.20",23); InputStream cIn = System.in; InputStream sIn = socket.getInputStream(); OutputStream sOut = socket.getOutputStream(); OutputStream fOut = new FileOutputStream("D:\\save.dat"); boolean running = true; try{ while(running){ if(cIn.available()>0){//将控制台的信息传输给Socket sOut.write(cIn.read()); } if(sIn.available()>0){//将Socket传过来的数据存储到文件当中 fOut.write(sIn.read()); } Thread.sleep(10); } }catch(IOException e){ e.printStackTrace(); }finally{ fOut.close(); socket.close(); } } }
[解决办法]
哦。忘了每次write后要flush了。还有那个常量Exit在这里没有用。
[解决办法]
共同学习了 up
[解决办法]
1.你的需求不明确。缺少太多的信息。
2.如果只是想传文件,那用FTP会更直接一些,或者HTTP下载也可以。
3.如果即要服务端有执行客户端命令的功能,又要有传输文件(或数据)的功能,而且还不使用FTP,那必须要写个协议才行。
4.第3种情况,编程复杂度太大。你出300分,估计也没几个人帮你做。
5.我写的代码也只是抛砖引玉,仅供楼主参考。
[解决办法]
比较汗~~~
你想实现MSN等的聊天记录功能,那也得有具体的聊天程序才行啊,没这样的聊天程序,怎么帮你实现日志的记录功能?
不会是要我给你编一个聊天程序吧?
C/S架构的聊天通讯程序,其实是一个比较复杂的程序。
其中涉及到大致4个过程,信息的显示,信息的编码组包,信息的传输,以及信息的拆包解码。
楼主想要实现聊天内容的记录功能,打算记录哪个过程的聊天信息?
其实,我也是比较郁闷滴。
[解决办法]
楼主应该把问题说我更详细点
[解决办法]
import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;/** * 推荐使用两个线程来处理,本代码是单线程的程序。 * <p/> * 该类创建于 2009-6-16 下午03:42:50 * * @version 1.0.0 * @author 9sky */public class RecordIOInfo { private static String Host = "127.0.0.1";// 服务端IP private static int Port = 4567;// 服务端监听端口 private static String FileName = "D:\\save.dat"; public static void main(String[] args) throws Exception { Socket socket = new Socket(Host, Port); InputStream cIn = System.in; InputStream sIn = socket.getInputStream(); OutputStream sOut = socket.getOutputStream(); OutputStream fOut = new FileOutputStream(FileName); boolean running = true; try { while (running) { if (cIn.available() > 0) {// 将控制台的信息传输给Socket sOut.write(cIn.read()); sOut.flush(); } if (sIn.available() > 0) {// 将Socket传过来的数据存储到文件当中 fOut.write(sIn.read()); fOut.flush(); } Thread.sleep(10); } } catch (IOException e) { e.printStackTrace(); } finally { fOut.close(); socket.close(); } }}
[解决办法]
System.in.read(bb);
这句话。程序会停到这句话上面,直到控制台输入一个字符为止。
[解决办法]
socket和serverSocket的使用在加上java.io.*的使用就可以