写了一个socket程序,client是JavaSE写的,server是C写的。交互过程很简单:1.client连接server
2.client发报文,server接收
3.server发应答报文,client接收
4.双方关闭连接现在的问题出在第三步:server方的日志显示发送已经成功,但client端则读超时,抛SocketTimeoutException。请问什么情况会导致这种现象呢?
client程序如下:Socket socket = null;        ByteArrayOutputStream sendMessage = ServiceCaller.generateMessage();        try {
            InetSocketAddress socketAddr = new InetSocketAddress("xxxxx", 60000);            socket = new Socket();            socket.connect(socketAddr, 3000);            socket.setSoTimeout(3000);            socket.getOutputStream().write(sendMessage.toByteArray(), 0,
                    sendMessage.toByteArray().length);            socket.getOutputStream().flush();        ByteArrayOutputStream respMessage = new ByteArrayOutputStream();            int recvLength = 0;
            int readByte = -1;
            byte[] recvBuffer = new byte[1000];//异常是此处抛出的,read超时
            while ((readByte = socket.getInputStream().read(recvBuffer, 0, recvBuffer.length)) > 0) {
                recvLength += readByte;
                respMessage.write(recvBuffer, 0, readByte);
            }
        } catch (Exception e) {
            e.printStackTrace();        } finally {
            try {
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }