最近做毕业设计,用到Socket编程,遇到一个问题,自己难以理解,也没法解决,请教各位对此有所了解的高手。
我在程序中,服务器端与客户端连接成功后,第一次的双方发送消息都很成功,但第二次客户端向服务器端发送消息的时候,服务器端抛出这样一个异常:StreamCorruptedException
察看了SUN的API文档,里面的解说是什么信息不一致。一头雾水!请教各位了。

解决方案 »

  1.   

    呵呵,同僚。我写了一个Socket的程序,调用accetp()方法那里总有一个null异常。下面的代码就不执行了,也不知道是为啥。
      

  2.   

    你的客户端是不是IP地址没写对?NULL是空对象啊。你看看你的客户端代码写对没?我的是可以成功连接,但第二次发送信息就出现上面说的异常了
      

  3.   

    好像是因为调用getInputStream方法就会读取标示头信息。用缺省的serializetion的实现时,一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应.ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
    如果你使用socket,并通过对象输入/输出流来处理的话,并且已经对某个socket调用了一次getInputStream时,但又需要把这个socket的相关信息作为参数传递给别的对象时,应注意:不用直接把socket传过去,应该把对应的ObjectInputStream或ObjectOutputStream对象传递过去。