我写了下面的两个类,是想实C/S之间的通信.我要怎么设置类中的值,才能实现通信呢?我在运行SocketClient  时,出现java.net.ConnectException: Connection refused: connect的异常!请指教一下,小弟.package urlsocket;
import java.net.*;
import java.io.*;public class SocketClient {
    Socket s=null;
    DataInputStream instream=null;
    DataOutputStream outstream=null;
    
    
    public SocketClient() {
        try{
            init();
            waitData();
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
    }
    void init() throws Exception
    {
        s=new Socket("192.168.0.102",8765);
        instream=new DataInputStream(s.getInputStream());
        outstream=new DataOutputStream(s.getOutputStream());
        s.setSoTimeout(3000);
    }
    void waitData()
    {
        while(true)
        {
            try{
                String str=instream.readUTF();
                System.out.println("Client accept:"+str);
                str=Integer.toString(Integer.parseInt(str)+1);
                outstream.writeUTF(str);
            }catch(Exception e)
            {
                System.out.println(e.toString());
                break;
            }
                    
        }
    }
        public static void main(String[] args) {
        new SocketClient();
    }
}
package urlsocket;import java.net.*;
import java.io.*;public class SocketServer {
    ServerSocket ss=null;
    Socket s=null;
    DataInputStream instream=null;
    DataOutputStream outstream=null;
    
    public SocketServer() {
        try{
            init();
            
        }catch(Exception e)
        {
            System.out.println(e.toString());
        }
    }
    void init() throws Exception 
    {
        ss=new ServerSocket(8765);
        s.setSoTimeout(3000);
    }
    void waitForClient()
    {
        try{
            s=ss.accept();
            instream=new DataInputStream(s.getInputStream());
            outstream=new DataOutputStream(s.getOutputStream());
            outstream.writeUTF("1");
            s.setSoTimeout(3000);
            waitData();
        }catch(Exception e)
        {
            System.out.println(e.toString());
        }
    }
    void waitData()
    {
        while(true)
        {
            try{
                String str=instream.readUTF();
                System.out.println("Server accept:"+str);
                int nu=Integer.parseInt(str)+1;
                if(nu>10)
                {
                    System.out.println("send end!");
                    break;
                }
                else
                {
                    str=Integer.toString(nu);
                    outstream.writeUTF(str);
                }
            }catch(Exception e)
            {
                System.out.println(e.toString());
                break;
            }
        }
    }    public static void main(String[] args) {
        SocketServer socketserver = new SocketServer();
        socketserver.waitForClient();
    }
}

解决方案 »

  1.   

    先把server启动
    然后再起用client调用服务器啊
      

  2.   

    怎么启动server啊,我没有做过,可以说的具体一点吗?
    起用client调用又是怎么回事?,
    我是初次用的,书上也没有相关的介绍.
      

  3.   

    就是先运行SocketServer.class类文件,
    再运行    SocketClient.class类文件.要不然client类在运行s=new Socket("192.168.0.102",8765)的时候会发现8765这个接口没有被监听,所以会出错.
      

  4.   

    回复人:zkf100() ( ) 信誉:100 2007-03-22 21:51:10 得分:0
    ? 怎么启动server啊,我没有做过,可以说的具体一点吗?
    ----------------------------------------------------------------------如果在同一机器上测试两个程序,启动server的方法:
    java SocketServer localhost
    再开一个cmd窗口
    java SocketClient
      

  5.   

    还有在同一机器上测试的时候,你的IP最好不要用192.168.0.102,用在路由器上的IP可能会有点问题.如果你有用socketImpl的话,再用这个IP,不然,请用127.0.0.1这个是本地IP.
      

  6.   

    我用的是127.0.0.1,运行也可以成功.
    但是,最后还会出现一行java.net.ConnectException: Connection refused: connect的异常
    这又是怎么回事呢?