服务器端程序:package mytest;import java.net.*;
import java.io.*;
import java.util.*;public class Server {
    private ServerSocket server;
    private DataInputStream input;
    private DataOutputStream output;
    public static Vector vc_client = new Vector();    public Server() {
        //创建服务器套接字
        try {
            server = new ServerSocket(50000);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }    public void serverStart() {
        System.out.println("=======start==========");
        //获取与客户机连接的套接字
        int i = 0;
        while (true) {
            try {
                Socket client = server.accept();
                System.out.println("========accept:" + (i + 1) + "==========");
                vc_client.add(client);                Accep acp = new Accep(client);
                System.out.println("=======begin===========");
                acp.start();
                System.out.println("=====acp.start();========");            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        Server server = new Server();
        server.serverStart();
    }    class Accep extends Thread {
        Object obj;
        Socket sock;        Accep(Socket cli) {
            this.sock = cli;
            try {
                input = new DataInputStream(sock.getInputStream());
                output = new DataOutputStream(sock.getOutputStream());
            } catch (IOException ex) {
                ex.printStackTrace();
            }        }        public void run() {
            int i = 0;
            try {
                System.out.println("========ok,me start=========");
                while ((obj = input.readUTF()) != null) {
                    System.out.println((i + 1) + "------>" + obj.getClass());
                    output.writeUTF("sss");
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {                try {
                    if (output != null) {
                        output.close();
                    }
                    if (input != null) {                        input.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }        }
    }}
客户端程序:package mytest;import java.net.*;
import java.io.*;
import java.util.*;public class Client {
    private DataInputStream input;
    private DataOutputStream output;
    Socket client ;    public Client() {    }    public void clientStart(){
        try {
            System.out.println("========start=========");
           client = new Socket("192.168.0.50", 50000);
           System.out.println("========accep===========");
           Accep acp = new Accep(client);
           acp.start();
       } catch (UnknownHostException ex) {
           ex.printStackTrace();
       } catch (IOException ex) {
           ex.printStackTrace();
       }    }    public static void main(String[] args) {
        Client client = new Client();
        client.clientStart();
    }    class Accep extends Thread{
            Object obj;
            Socket sock ;            Accep(Socket cli){
                this.sock = cli;
                try {
                    input = new DataInputStream(sock.getInputStream());
                     output = new DataOutputStream(sock.getOutputStream());
                } catch (IOException ex) {
                    ex.printStackTrace();
                }            }            public void run(){
                int i = 0;
                try {
                    while ((obj = input.readUTF()) != null) {
                       System.out.println(i + "------>" + obj.getClass());
                       output.writeUTF("sss");
                    }
                } catch (ClassNotFoundException ex) {
                    ex.printStackTrace();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
    }}
程序走不到线程处理部分。请各位帮忙解决啊。
先谢谢各位了!!!!

解决方案 »

  1.   

    回楼上的答复:
    后来我也检查出来这有问题了。但在客户端加上一句代码,只要SOCKET接通,客户端就给服务端发送一条信息,结果还是没出来。
    再次请教!
      

  2.   

    问题已经解决!!!
    该帖可以结贴了!!!服务器端和客户端的输入输出对象NEW的顺序要对应
    也就是说,在服务器端
    ObjectInputStream input = new ObjectInputStream (sockt.getInputStream );
    ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream );那么,在客户端就必须是:
    ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream );
    ObjectInputStream input = new ObjectInputStream (sockt.getInputStream );这样NEW的原因在于:
    建立ObjectInputStream对象是需要先接收一定的header数据,接收到这些数据之前
    会处于阻塞状态。故而为了防止这种死锁状态,通讯两方的
    ObjectInputStraem,ObjectOutputStream必须注意顺序对应使用。