java做tcp客户端,给我vb写的服务器端发数据
我用winsock可以建立连接,但是在winsock.accept之后
再给客户端发回数据,却有奇怪的问题:1.winsock.senddata之后,马上winsock.close,则java 客户端收到null
2.winsock.senddata之后,不关闭winsock,则java客户端假死,过十几秒后,我手动关闭server端程序(点窗口X)后,java客户端方可收到server端发送数据server端:vb6.sp5
client:java是在wsad5下跑的 jdk1.3吧第一种情况的vb程序
---------------------------------------------
Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then _
tcpServer.Close tcpServer.Accept requestID
lstOutput.AddItem "client connected"
lstOutput.AddItem tcpServer.State '这里显示2
tcpServer.SendData SERVER_READY
lstOutput.AddItem "send: ready"
lstOutput.AddItem tcpServer.State '这里显示7
tcpServer.Close <---第二种情况去掉这行
lstOutput.AddItem "Server Close"
lstOutput.AddItem tcpServer.State '这里显示0java client端
-------------------------------------------------------------
socket = new Socket(InetAddress.getByName(ipAddr), 9977);
out = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); /*读取前置机返回的信息,取得前置机是否处于ready状态*/
recvData = in.readLine(); <----在这里假死
in.read();
我用winsock可以建立连接,但是在winsock.accept之后
再给客户端发回数据,却有奇怪的问题:1.winsock.senddata之后,马上winsock.close,则java 客户端收到null
2.winsock.senddata之后,不关闭winsock,则java客户端假死,过十几秒后,我手动关闭server端程序(点窗口X)后,java客户端方可收到server端发送数据server端:vb6.sp5
client:java是在wsad5下跑的 jdk1.3吧第一种情况的vb程序
---------------------------------------------
Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then _
tcpServer.Close tcpServer.Accept requestID
lstOutput.AddItem "client connected"
lstOutput.AddItem tcpServer.State '这里显示2
tcpServer.SendData SERVER_READY
lstOutput.AddItem "send: ready"
lstOutput.AddItem tcpServer.State '这里显示7
tcpServer.Close <---第二种情况去掉这行
lstOutput.AddItem "Server Close"
lstOutput.AddItem tcpServer.State '这里显示0java client端
-------------------------------------------------------------
socket = new Socket(InetAddress.getByName(ipAddr), 9977);
out = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); /*读取前置机返回的信息,取得前置机是否处于ready状态*/
recvData = in.readLine(); <----在这里假死
in.read();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货