我模拟里聊天系统,分别写了客户端和服务器端, 在Eclipse单独都运行,怎么才能实现互动呢?
用两个dos窗口我怎么老说不怎么样的?

解决方案 »

  1.   

    在命令行下分别运行java就行了嘛.
      

  2.   


    我把程序帖出来看家看看怎么会事的怎么就我的不行呢
    package Client;import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.Socket;
    import java.net.UnknownHostException;public  class ClientTest implements Runnable {

    Socket clientSocket;
    boolean flag = true;               //用于标记是否结束;
    Thread c ;                         //想服务器端发送数据;
    BufferedReader in;
    DataOutputStream out; /**
     * @param args
     */
    public void ClientStart()
    {
     try {
    clientSocket = new Socket("localhost",8085); //连接本机
    System.out.println("已经连接**************");

                                                 //获取对象流
    in = new BufferedReader(
      new InputStreamReader(clientSocket.getInputStream()));  out = new DataOutputStream(
    clientSocket.getOutputStream());

     c  =  new Thread();
     c.start();                                 //启动线程向服务器发送数据;
     String aline;
     
     while((aline = in.readLine())!=null)
    {
    System.out.println(aline);

    if(aline.equals("byte"))
    {
    flag = false;
    c.interrupt();     //中断线程;
    break ;
    }

    }
     out.close();
     in.close();
     clientSocket.close();
     System.exit(0);                //程序运行结束;
     


    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public static void main(String[] args)
    {
           new ClientTest().ClientStart();
    }

    public void run()
    {
    while(true)
    { try {
    String ch;
    BufferedReader in= new BufferedReader(
                 new InputStreamReader(System.in));
    while((ch = in.readLine())!=null)//键盘接收字符并向客户发送;
    {
    out.writeBytes(ch);
    if(ch=="\n")
    out.flush() ;

    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }package Server;import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;public  class ServerTest implements Runnable{

    ServerSocket server = null;
    Socket clientSocket;
    boolean flag = true;
    Thread c ;
    BufferedReader in;
    DataOutputStream out;

    public static void main(String[] args)
    {
    new ServerTest().ServerStart();
    }
    public void ServerStart()
    {
    try {
    server = new ServerSocket(8085);
    System.out.println("端口号是:"+server.getLocalPort());
    while(flag)
    {
    clientSocket = server.accept();    //处于监听状态,并返回一个Socket;
                               
    System.out.println("已经连接**************");
                                      //获取对象流;
    in = new BufferedReader(
      new InputStreamReader(clientSocket.getInputStream())); 
                             
    out = new DataOutputStream(
    clientSocket.getOutputStream());

     c  =  new Thread();
     c.start();                     //启动线程向客户端发送数据;
     String aline;
     
     while((aline = in.readLine())!=null)
    {
    System.out.println(aline);

    if(aline.equals("byte"))
    {
    flag = false;
    c.interrupt();     //中断线程;
    break ;
    }

    }
     out.close();
     in.close();
     clientSocket.close();
     System.exit(0);                //程序运行结束;
     
     
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    public void run()
    {
    while(true)
    { try {
    String ch;
    BufferedReader in= new BufferedReader(
                 new InputStreamReader(System.in));
    while((ch = in.readLine())!=null)//键盘接收字符并向客户发送;
    {
    out.writeBytes(ch);
    if(ch=="\n")
    out.flush() ;

    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    //析构方法关掉
    public void finalize()
    {
    try {
    server.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
      

  3.   


    G:\WorkSpace\Socket\Server>java server
    Exception in thread "main" java.lang.NoClassDefFoundError: serverG:\WorkSpace\Socket\Server>运行了抱  Exception in thread "main" java.lang.NoClassDefFoundError: server
      这个错 但是在eclipse中是没有的??
      

  4.   

    有偿转让Java即时通信工具源程序及设计文档可以学习到专业级的多线程、Socket、Swing图形等Java技术。其中包括设计文档,更适合学生用于毕业设计
    有意者与[email protected]联系程序在这里
    http://www.tomore.com/1/37388.html
      

  5.   

    应该这样运行G:\WorkSpace\Socket> java Server.ServerTest
    因为你的main方法在ServerTest类中
      

  6.   

    看到你2个程序都有package,如果你是用eclipse写的,你应该是在Resource perspective下写的吧,在这个下写的程序,直接在命令提示符下运行是会出错的
    有时候你会发现,把Resource perspective状态下写的程序变成Java perspective下,很多程序都会出错
      

  7.   

    aywrenyue(基本功修炼中……)  
    说的是我按照你说说的运行成功了,只是不可以在dos中打字  不知道为什么的?G:\WorkSpace\Socket>java Server.ServerTest
    端口号是:8083
    服务器端已经连接**************G:\WorkSpace\Socket>java Client.ClientTest
    客户端已经连接**************
      

  8.   

    是不是我的 键盘接受字符有问题,在eclipse能的 但我也自信,键盘接受是没错的!