JAVA SOCKET与TUXEDO通信的问题

现在我这边的SOCKET作为TUXEDO发送报文的接收服务端,在返回数据给TUXEDO的时候,现在遇到一个问题,就是同一个SOCKET连接不能够将消息分批返回给TUXEDO,
因为TUXEDO要求第一个报文为8位的后续报文长度,然后再发送后续报文,必须分开发,否则不能够正常接收。
我记得在JDK1.4的时候,我们做通讯测试的时候,可以将报文分两次发送,后面因为要使用到线程池,就换成了JDK1.5,结果现在不能够分两个次发送,我尝试了JDK1.6_U18也不行,我的程序如下:
...
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(returnLen);//先发送报文长度
dos.flush();
dos.writeBytes(message);//先发送报文长度
dos.flush();
...
采用JDK5以上的版本按这样的程序发送的时候,他会报两个一起发送,我的SOCKET测试客户就可以检测,因为我的SOCKET客户端在收到消息后就会立刻退出,不会等后面的报文,结果打印出来的就是长度加后续报文。
我曾尝试(1):
...
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(returnLen);//先发送报文长度
dos.flush();
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(message);//先发送报文长度
dos.flush();
...
(2):
...
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(returnLen);//先发送报文长度
dos.flush();
dos.close();这里会把SOCKET也关掉,后面的就发不出去了,报异常
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(message);//先发送报文长度
dos.flush();
...

现在想换到JDK1.4测试也不能够了,因为其它的关键地方也使用JDK5的特性。不知道各位有没有遇到这样的问题,有请分享一下。

 

 

犯了一个低级错误,对方原来不是用TUXEDO发送的报文,我一直以为对方使用的是TUXEDO发送的报文,就是用的TCP/IP协议与我进行的通信。
我的报文也是发过去了的,只是那边解析没有正确,一直显示收到的为空,后面由对方修改程序,问题搞定。
我咋就这么背了,给自己找不快,不过这个分次给对方发报文还是没有解决,暂时先放下了。

本文出自:冯立彬的博客



你可能感兴趣的:(java,jdk,socket,测试,dos,通讯)