1.java.nio.*;
这是jdk1.4中新增加的功能,以前版本都没有;这个package下的类可以实现非阻塞socket。2.用InputStream的read方法接收数据的时候,如果返回值小于0表示连接断了。这是阻塞方式下的判断方式;非阻塞方式下,还不知道;相信java.nio中也有其他处理方法。
解决方案 »
- 5. 给出10个数,使用某种排序方法,按照从小到大的顺序输出各个数。
- NetBean如何按照自己要求创建一个树??
- 一个简单的小问题?问题解决立即给分!谢谢!
- 如何写一个正则表达式,这个表达式的功能就是能从路径字符串中取出文件名及扩展名,详细见内容
- 请教各位同仁一个关于多线程的问题
- 哪位用过log4j,进来介绍介绍
- 求高手点拨一个Swing聊天IM工具的“图片”“动画”即时发出的制作方法.
- 懂得snmp网管编程的请进,如何设置类型为MacAddress的值
- 为什么在启动RMiregistry时总出现这样的的错误?
- 在JAVA中如何产生每次程序执行都不同数?
- JAVA发包数据包问题?
- java的平台无关性是什么意思?
ObjectOutputStream oos = new ObjectOutputStream(_skt.getOutputStream());oos.writeObject("Welcome you!");
oos.writeObject(new SocketMsgInfo("This is SocketMsgInfo"));
oos.writeObject(new SocketMsgInfo("Transger is completed!"));FileInputStream fis = new FileInputStream("C:/PkgClnup.log");
byte buf[] = new byte[64];
int nReaded = 0;
while((nReaded = fis.read(buf)) >= 0){
oos.write(buf);
}
oos.flush();oos.writeObject(new SocketMsgInfo("Transger is completed!"));由于在该socket中既有对象又有流,所以我在B端使用readObject和read的方式来读取,即:
try{
while(ois.readObject()) ...
}catch(Exception e){
while(ois.read(buf)) ...
}
我是想先读出对象,在读流数据,但是,如果流数据后还有对象的话,就不能将该对象读出来了。因为方法read被阻塞了。
如果通信的双发都是java程序写的,那么没有问题,但是如果有一端不是java的话,那就不行了。一般在进行socket编程的时候,都用InputStream和OutputStream来读写二进制数据,然后才对这个数据进行解析处理。
-----------在网络中判断连接是否终止,一般的标准是超时。比如判断某主机是否一直alive,就要每隔一定时间发一个package