银行socket连接的奇怪问题.非常着急.定高分相送!!!!

时间:2023-02-07 20:49:09
银行的socket服务程序是c(unix)写的,其工作流程如下:
--------
server.accept等待client端连接,有连接进入后,保存下client连接,并且接受client数据.然后转去进行银行处理.处理完毕后,取出client连接,并且将结果写进输出流.其c写的测试client程序与其通信,没有问题.

实际client端程序是我的java程序,流程如下:建立与server连接,然后向输出流写入数据,然后read服务端输出.但是,服务端输出一直超时;就是说,无法受到服务端写的输出信息.
(我的java client向自己写的模拟java server发请求,完全没有问题,可以正常返回)

请问那位高人能指点一二????非常着急.谢谢.....

6 个解决方案

#1


再次重申:
1、不要用PrintWriter,在网络传输上,它可能会有问题。
2、我还想问一下:你需求是否只和服务器交互一次就退出?
3、调试网络程序,不知到实际情况,很难说哪里出问题,但现在你应该做如下测试:
   (1)、确信你的java已经向服务端发出正确的信息(服务端能正确解码)。
   (2)、确信服务端的确在1分钟内处理完毕,并发出信息到你的java程序。
   (3)、网络读不一定一次能读到全部的字符,你这样第二次读的时候会将第一次读的冲掉,换个读方法,能指定保存位置的。

#2


期待结果ing!

#3


to qqbz(qqbz) :多谢
1、我用PrintWriter写过去的数据,对方接收正确。。
2、不是交互一次就推出。是多次请求-响应。
3、银行方认为其程序不会有问题,对方的程序已经应用到多家公司。

#4


lbdl(dreamweaver),byte[] buffer=new byte[220];        in.read(buffer);这样当然只能读到220位。while(true){接收完成后break;}就成了。

#5


用Writer是正确的,因为Stream处理的的是byte,Reader,Writer处理的是char.应该是读取的方式有问题.

#6


up

#1


再次重申:
1、不要用PrintWriter,在网络传输上,它可能会有问题。
2、我还想问一下:你需求是否只和服务器交互一次就退出?
3、调试网络程序,不知到实际情况,很难说哪里出问题,但现在你应该做如下测试:
   (1)、确信你的java已经向服务端发出正确的信息(服务端能正确解码)。
   (2)、确信服务端的确在1分钟内处理完毕,并发出信息到你的java程序。
   (3)、网络读不一定一次能读到全部的字符,你这样第二次读的时候会将第一次读的冲掉,换个读方法,能指定保存位置的。

#2


期待结果ing!

#3


to qqbz(qqbz) :多谢
1、我用PrintWriter写过去的数据,对方接收正确。。
2、不是交互一次就推出。是多次请求-响应。
3、银行方认为其程序不会有问题,对方的程序已经应用到多家公司。

#4


lbdl(dreamweaver),byte[] buffer=new byte[220];        in.read(buffer);这样当然只能读到220位。while(true){接收完成后break;}就成了。

#5


用Writer是正确的,因为Stream处理的的是byte,Reader,Writer处理的是char.应该是读取的方式有问题.

#6


up