先说一下我的问题:
一台本地机器Localhost、一台服务器Remote,2台机器通过Socket进行通讯。本机程序运行时,会将本机ip发送给远程主机,然后远程主机会返回信息给本地机器。问题就在这时出现了,本机ip发送给远程主机是成功的,但是接收不到服务器传来的信息,当关闭远程主机的程序时,本地机器就能接收到了,不知道为什么?请知道的指教一下。本机代码是用java写的,服务器那边是用VB写的。两者通过Socket通讯。
本机代码如下:public class PC {
public static void main(String[] args){
String remote = "192.168.1.5";
try {
//获得本机IP
InetAddress addr = InetAddress.getLocalHost();
String localhostIP = addr.getHostAddress(); Socket socket = new Socket(remote,1011);
//将本机IP发送给远程主机
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(localhostIP);
bw.flush();
//接受主机发送的指令
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null;
if((line=br.readLine()) != null){
System.out.println("收到的信息是:"+line);
} br.close();
is.close();
bw.close();
os.close();
socket.close();
} catch (Exception e) {
System.out.println("main异常:"+e.getMessage());
}
}
}
一台本地机器Localhost、一台服务器Remote,2台机器通过Socket进行通讯。本机程序运行时,会将本机ip发送给远程主机,然后远程主机会返回信息给本地机器。问题就在这时出现了,本机ip发送给远程主机是成功的,但是接收不到服务器传来的信息,当关闭远程主机的程序时,本地机器就能接收到了,不知道为什么?请知道的指教一下。本机代码是用java写的,服务器那边是用VB写的。两者通过Socket通讯。
本机代码如下:public class PC {
public static void main(String[] args){
String remote = "192.168.1.5";
try {
//获得本机IP
InetAddress addr = InetAddress.getLocalHost();
String localhostIP = addr.getHostAddress(); Socket socket = new Socket(remote,1011);
//将本机IP发送给远程主机
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(localhostIP);
bw.flush();
//接受主机发送的指令
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null;
if((line=br.readLine()) != null){
System.out.println("收到的信息是:"+line);
} br.close();
is.close();
bw.close();
os.close();
socket.close();
} catch (Exception e) {
System.out.println("main异常:"+e.getMessage());
}
}
}
解决方案 »
- jbuilder一般用哪个版本?
- JAVA面试题解惑系列(七)——日期和时间的处理
- [求助]这个程序有什么问题?
- 请问下用DELPHI和JAVA做一个C/S的小的管理信息系统谁更麻烦点,谢谢
- QQ主页有下载thinking in java!
- 一个Struts的概念问题
- 急,哪位高手能不能給我個用java做ftp上傳的例子!@#$%^
- jubilder8和IE有关系吗?
- Java,我有一个外网IP比如7.7.7.7:port的server,想和一内网192.168.0.13client通信,server端求个java小例子
- 用Jbuilder开发java程序时如何做成.exe应用程序呢?
- 【ASK】200分,问几个比较深的问题。谢谢
- OutputStreamWriter的charsetName参数是什么?
或者没有把流flush出去终极办法 抓下包看下服务端有没有返回数据
服务器端利用类似fflush 强制刷新缓冲试试。
谢谢楼上的几位!
PS:
1:如果VB那边没有添加换行符,可以用如下方法解决:
//可能需要少许的修改
InputStream is = socket.getInputStream();
byte[] buf = new byte[1024];
is.read(buf);
String msg = new String(buf, "gb2312");
System.out.println("msg = "+msg);
2:VB中的换行符为:vbCrlf