关于在Java中进行网络编程的几个问题,望高手不吝赐教! 1.java.nio.*;这是jdk1.4中新增加的功能,以前版本都没有;这个package下的类可以实现非阻塞socket。2.用InputStream的read方法接收数据的时候,如果返回值小于0表示连接断了。这是阻塞方式下的判断方式;非阻塞方式下,还不知道;相信java.nio中也有其他处理方法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当A和B建立Socket连接后,如果在A端我向Socket写入既有对象又有流的数据,那么,我在B端怎样改通过什么办法将这些对象和流都正确地读出来?或者有没有其他更好的办法?在A端的代码(其中SocketMsgInfo为一个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来读写二进制数据,然后才对这个数据进行解析处理。 2。如果A和B的连接已经建立,但是在某一时刻,A端出现异常,如程序异常终止,或突然断电,那么,B端能否“立刻发现”他与A端的连接已经被终止?因为只有能“俘获”到这个“事件”,我才能做起他针对连接被断开的处理。-----------在网络中判断连接是否终止,一般的标准是超时。比如判断某主机是否一直alive,就要每隔一定时间发一个package java 轻量级和重量 applet servlet 传递数据库中图像 急问:对于一个字符,如果判断其是否为汉字? 为什么去掉两行不能显示了(关于Timer类) 刚解决光标问题,控件问题又来了 帮我看个SQL语句 好像JDK 1.4在Solaris上有严重的字符集Bug!!!!欢迎大家讨论!!! 关于socket.connect的timeout问题,急,请高手不吝赐教,多谢了! JBuiler和Visual Age for 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