我们用java开发了一套socket的服务器端,现在需要给客户提供VC程序的socket客户端。但是不知道为什么当客户端连接上服务器端之后,java服务器端发送给客户端的字符流可以接收的到,VC开发的客户端发送给java服务器端的字符流,服务器端接收不到。直到客户端断开连接的时候才能够把消息发送到服务器端!我知道在java中有一个flush()的函数能够强制将缓存的数据发送到连接的对方,然后清空缓存,但是不知道VC中有没有这样一个函数!想请教大家,有没有碰到过类似问题?怎么解决的?
解决方案 »
- 结构设计问题
- 有一个好的群的
- 大家好!哪位高手能不能给我大概介绍一下windows程序设计原理啊,万分感谢!!!
- 接口参数的设置问题
- 我的VC为什么认不出extern "C"?
- 各位,怎麼用SoftIce(V2.7)來Debug Release版的程序,我用Loader后,程序沒有被攔截,而是自己在正常運行!!!
- 请教大家面试的经验,一般回答哪些非技术性的问题?
- 试问:MFC这个DLL到底在操作系统自带还是VC带的? 请作必要解释说明,谢谢!!!
- 请问怎么设置对话框上控件字体的大小?
- vc6运行之后出现的错误提示 大神们帮帮忙
- 又是if (!ProcessShellCommand(cmdInfo))这句出错。大家帮帮谢谢了。
- SoftICE问题求助!
readline好像是读到一行吧.
也就是需要 '\n'结束的.你试试其他方法呢?我也忘记了java是怎么做的了.
我原来的程序如下:
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));
String inputLine, outputLine;
out.println("<?xml version='1.0' encoding='ISO-8859-1'?><txnreq><syscode>0101</syscode><sysword>等待数据包</sysword></txnreq>");
out.flush();
while ((inputLine=in.readLine())!=null) {
outputLine = inputLine;
out.println(outputLine);
out.flush();
}
修改后的程序如下:
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));
String inputLine, outputLine;
out.println("<?xml version='1.0' encoding='ISO-8859-1'?><txnreq><syscode>0101</syscode><sysword>等待数据包</sysword></txnreq>");
out.flush();
boolean a = true;
while (a){
System.out.println(in.read());
}
这样的话,用in.read()就可以得到用VC开发的客户端发送过来的信息!
但是,用in.read()的话我们java服务器端还得对发送过来的二进制流进行重新组合!
有没有我们java服务器端用in.readLine()就可以读到VC开发的客户端发送过来的信息的方法?
现在想请教的是,VC怎样才能够发送一行字符到服务器端?