A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 布鲁Go 中级黑马   /  2013-12-22 21:45  /  3517 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 布鲁Go 于 2013-12-23 15:14 编辑

编写一个客户端和一个服务器端,分别运行时只能运行在同一个console窗口,能同时运行两个并显示吗?譬如下面这个把客户端发来的字符串反转的程序:在windows里可以演示成功,但myeclipse弄半天不知道怎么弄。。
  1. import java.net.*;
  2. import java.io.*;
  3. class Client
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 InetAddress ia = null;
  8.                 try {
  9.                         ia = InetAddress.getLocalHost();//获取本地主机地址
  10.                 } catch (UnknownHostException e) {
  11.                         e.printStackTrace();
  12.                 }
  13.                 Socket s;
  14.                 try {
  15.                         //新建一个客户端Socket,端口为10007
  16.                         s = new Socket(ia,10007);
  17.                         //定义字符流缓冲区,接收键盘输入后的数据。
  18.                         BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  19.                         //定义字符流缓冲区,接收Socket流中的InputStream。
  20.                         BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  21.                         //定义打印流,接收Socket流中的OutputStream
  22.                         PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
  23.                         String line=null;
  24.                         while ((line=bufr.readLine())!=null)
  25.                         {
  26.                                 if ("over".equals(line))
  27.                                         break;
  28.                                 pw.println(line);
  29.                                 System.out.println(bufin.readLine());
  30.                         }
  31.                         s.shutdownOutput();//关闭客户端Socket中的output流。
  32.                         pw.close();
  33.                         bufr.close();
  34.                         bufin.close();
  35.                         s.close();               
  36.                 }
  37.                 catch (IOException e)
  38.                 {
  39.                         e.printStackTrace();
  40.                 }
  41.                
  42.         }
  43. }
  44. class Server
  45. {
  46.         public static void main(String[] args)
  47.         {
  48.                 ServerSocket ss;
  49.                
  50.                 try
  51.                 {
  52.                         //新建一个客户端服务器Socket,绑定10007端口。
  53.                         ss = new ServerSocket(10007);
  54.                         // 侦听并接受到Socket s的连接
  55.                         Socket s=ss.accept();
  56.                         String ip=s.getInetAddress().getHostAddress();
  57.                         //提示客户端连接上了
  58.                         System.out.print(ip+"......connected");
  59.                         //定义字符流缓冲区,接收Socket流中的InputStream。
  60.                         BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  61.                         //定义打印流,接收Socket流中的OutputStream
  62.                         PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
  63.                         String line=null;
  64.                         StringBuilder sb=new StringBuilder();
  65.                         while ((line=bufin.readLine())!=null)
  66.                         {
  67.                                 sb.append(line);
  68.                                 line=(sb.reverse()).toString();//将接收到的字符串通过StringBuilder的方法反转。
  69.                                 pw.println("您输入的字符串反转后为:"+line);
  70.                                 sb.delete(0, sb.length());//清空sb中的数据,方便下一次接收。
  71.                                 
  72.                         }
  73.                         pw.close();
  74.                         s.close();
  75.                 }
  76.                 catch (IOException e)
  77.                 {
  78.                         e.printStackTrace();
  79.                 }
  80.                
  81.         }
  82. }
  83.         
复制代码


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
可以,你在你的console那个窗口的右边,有一个右上角带黄色加号的按钮,点击一下小三角,然后会有new console view,然后你点击一下就可以了,你在执行程序的时候可以使用display selected console按钮那里可以切换不同程序的运行console。这样就不影响了。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
在eclipse打开多个console窗口

以Socket为例:
TestServer.java和TestClient.java分别表示服务器端和客户端。



如果你想要2个窗口,解决步骤:
1.运行上述2个程序(它们需要不同的控制台)
2.右击已经打开的Console窗口,选择Detached(控制台脱离eclipse,可以调整位置和大小)
3.在Console的最右边有个Open Console下拉按钮,选中new console view。此时,又新建了一个Console,这个Console位置可能不在原来的地方,找到它,然后继续右击Detached,让它脱离
4.在一个console上,点击Display Selected Console下拉按钮,选择TestServer;而在另一个console上,点击Display Selected Console下拉按钮,选择TestClient。
5.在2个console上都点击Pin Console按钮
这样,就可以达到2个控制台的目的了,同样的方法还可以开多个

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马