您的位置:首页 > 编程语言 > Java开发

Socket读取输入流 分类: java 2010-03-22 17:38 3330人阅读 评论(0) 收藏

2010-03-22 17:38 405 查看
今天写了一个简单的程序,本机和服务器通过Socket通讯,本机发送本机ip给服务器,然后服务器返回信息给本机,但是本机一直没有接收到,如果将服务器那边的程序关闭的话,这边就能收到了,真晕!不知道怎么回事。

感觉自己的代码应该没有问题,但是梁工说他那边应该也没有问题。后来发帖子请教了一下,说可能是VB那边没有添加换行符或者没有Flush之类的,然后让梁工那边的VB程序加上换行符,测试一下,呵呵,还真的收到了。

本机代码如下:

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;
while((line=br.readLine()) != null){
System.out.println("收到的信息是:"+line);
/**
* 下面开始根据红外编号进行相关的步骤,如果投影机正播放内容,当下一次红外再次触发时,会导致投影机重新播放,那么此时应该设置一个延时。
*/
}
//如果VB发送信息的那段代码没有添加换行符,那么这边仍然可以获得,如下方法
//			byte[]   buf   =   new   byte[1024];
//		  	is.read(buf);
//		  	String   msg   =   new   String(buf,   "gb2312");

br.close();
is.close();
bw.close();
os.close();
socket.close();
} catch (Exception e) {
System.out.println("main异常:"+e.getMessage());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐