今天写了一个简单的程序,本机和服务器通过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()); } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。