本帖最后由 布鲁Go 于 2013-12-23 15:14 编辑
编写一个客户端和一个服务器端,分别运行时只能运行在同一个console窗口,能同时运行两个并显示吗?譬如下面这个把客户端发来的字符串反转的程序:在windows里可以演示成功,但myeclipse弄半天不知道怎么弄。。- import java.net.*;
- import java.io.*;
- class Client
- {
- public static void main(String[] args)
- {
- InetAddress ia = null;
- try {
- ia = InetAddress.getLocalHost();//获取本地主机地址
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- Socket s;
- try {
- //新建一个客户端Socket,端口为10007
- s = new Socket(ia,10007);
- //定义字符流缓冲区,接收键盘输入后的数据。
- BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
- //定义字符流缓冲区,接收Socket流中的InputStream。
- BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
- //定义打印流,接收Socket流中的OutputStream
- PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
- String line=null;
- while ((line=bufr.readLine())!=null)
- {
- if ("over".equals(line))
- break;
- pw.println(line);
- System.out.println(bufin.readLine());
- }
- s.shutdownOutput();//关闭客户端Socket中的output流。
- pw.close();
- bufr.close();
- bufin.close();
- s.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
-
- }
- }
- class Server
- {
- public static void main(String[] args)
- {
- ServerSocket ss;
-
- try
- {
- //新建一个客户端服务器Socket,绑定10007端口。
- ss = new ServerSocket(10007);
- // 侦听并接受到Socket s的连接
- Socket s=ss.accept();
- String ip=s.getInetAddress().getHostAddress();
- //提示客户端连接上了
- System.out.print(ip+"......connected");
- //定义字符流缓冲区,接收Socket流中的InputStream。
- BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
- //定义打印流,接收Socket流中的OutputStream
- PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
- String line=null;
- StringBuilder sb=new StringBuilder();
- while ((line=bufin.readLine())!=null)
- {
- sb.append(line);
- line=(sb.reverse()).toString();//将接收到的字符串通过StringBuilder的方法反转。
- pw.println("您输入的字符串反转后为:"+line);
- sb.delete(0, sb.length());//清空sb中的数据,方便下一次接收。
-
- }
- pw.close();
- s.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
-
- }
- }
-
复制代码
|