1.MySocketServer中ServiceThread 类TextArea ListenerMeg=new TextArea();
2.MyClient 中add("Client",textArea);改为add(textArea);
3.ClientSocket = new Socket("qq",8000); qq换成你的ip或你的主机名以上在俺机子上运行通过

解决方案 »

  1.   

    MySocketServer中ServiceThread 类TextArea ListenerMeg=new TextArea();
    MyClient 中add("Client",textArea);改为add(textArea);
    ClientSocket = new Socket("qq",8000); qq换成你的ip或你的主机名
      

  2.   

    //server
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MySocketServer
    {
        public static void main(String[] args)
        {
            ServerService MyServer =  new ServerService(8000,10);
        }
    }
    class ServiceThread extends Frame implements Runnable
    {
        ServerService FatherListener;
        Socket ConnectedClient;
        Thread ConnectThread;
        Panel LIstenerPanel;
        TextArea ServerMeg;
        public ServiceThread(ServerService sv,Socket s)
        {
            FatherListener = sv;
            ConnectedClient = s;
            ConnectThread = new Thread(this);
            setTitle("Answer Client");
            setLayout(new BorderLayout());
            ServerMeg = new TextArea(10,50);
            add("Center",ServerMeg);
            setResizable(false);
            pack();
            show();
            InetAddress ClientAddress = ConnectedClient.getInetAddress();
            ServerMeg.appendText("client connected" + "form\n" + ClientAddress.toString() +".\n");
        }
        public void run()
        {
            try
            {
                DataInputStream in = new DataInputStream(new BufferedInputStream(ConnectedClient.getInputStream()));
                PrintStream out = new PrintStream(new  BufferedOutputStream(ConnectedClient.getOutputStream()));
                out.println("hello!wellcome connent to our server! \r");
                out.flush();
                String s = in.readLine();
                while (! s.equals("Bye"))
                {
                    ServerMeg.appendText("ClientÊäÈëÐÅϢΪ:\n"+ s);
                    s = in.readLine();
                }
                ConnectedClient.close();
            }
            catch(Exception e){}
            FatherListener.addMeg("Client" + "closed" + "\n");
            dispose();
        }
    }
    class ServerService extends Frame
    {
        ServerSocket m_sListener;
        TextArea ListenerMeg = new TextArea();;
        public ServerService(int Port,int Count)
        {
            try
            {
                m_sListener = new ServerSocket(Port,Count);
                setTitle("Server Listener");
                this.addWindowListener(new WinAdpt());
                setLayout(new BorderLayout());
                add("Center",ListenerMeg);
                setResizable(false);
                pack();
                show();
                while(true)
                {
                    Socket Connected = m_sListener.accept();
                    InetAddress ClientAddress = Connected.getInetAddress();
                    ListenerMeg.appendText("Client"  + "Connected" + "form \n" + ClientAddress.toString() + ".\n");
                    ServiceThread MyST = new ServiceThread(this,Connected);
                    MyST.ConnectThread.start();
                }
            }
            catch(IOException e){}
        }
        public void addMeg(String s)
        {
            ListenerMeg.appendText(s);
        }
    }
    class WinAdpt extends WindowAdapter
    {
        public void windowClosing(WindowEvent e)
        {
            ((Frame)e.getWindow()).dispose();
            System.exit(0);
        }
    }
      

  3.   

    package com.test.csdn.socket;import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.io.*;
    public class MyClient extends Frame implements ActionListener
    {
        Socket ClientSocket;
        PrintStream os;
        DataInputStream is;
        String s;
        Label Mylabel = new Label("welcome");
        TextArea textArea;
        Button MyButton = new Button("send");
        public MyClient()
        {
            setTitle("Client Window");
            setLayout(new BorderLayout());
            this.addWindowListener(new WinAdptClient(this));
            MyButton.addActionListener(this);
            textArea = new TextArea(29,50);
            add("North",Mylabel);
            add("South",MyButton);
            add("Center",textArea);
            setResizable(false);
            pack();
            show();
            connect();
        }
        public void connect()
        {
            try
            {
                ClientSocket = new Socket("127.0.0.1",8000);
                os = new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream()));
                is = new DataInputStream(new BufferedInputStream(ClientSocket.getInputStream()));
                s = is.readLine();
                textArea.appendText(s+"\n");
            }
            catch(Exception e){}
        }
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource()==MyButton)
            {
                //try
                {
                    os.print(textArea.getText());
                    os.flush();
                }
            // catch(Exception e){}
            }
        }
        public static void main(String args[])
        {
            new MyClient();
        }
        class WinAdptClient extends WindowAdapter
        {
            MyClient m_Parent;
            WinAdptClient(MyClient p)
            {
                m_Parent = p;
            }
            public void windowClosing(WindowEvent e)
            {
                try
                {
                    m_Parent.os.println("Bye");
                    m_Parent.os.flush();
                    m_Parent.is.close();
                    m_Parent.os.close();
                    m_Parent.ClientSocket.close();
                    m_Parent.dispose();
                    System.exit(0);
                }
                catch(Exception ex){}
            }
        }
    }
      

  4.   

    老兄速度好快呢 555555 我刚刚找到想说打上去.....:<
    这个程序还好的 但是
    我还是喜欢 os = new PrintWriter (ClientSocket.getOutputStream());
         is = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream()));
      

  5.   

    呵呵,才快了一点点还有几个警告appendText最好改成append
    还有readLine也不推荐使用
      

  6.   

    果然是高手 ,还有一个问题: 为什么客户端不能发送信息啊!!!!!!        if(e.getSource()==MyButton)
            {
                //try
                {
                    os.print(textArea.getText());
                    os.flush();
                }
            // catch(Exception e){}
            改成:        if(e.getSource()==MyButton)
            {
                try
                {
                    os.print(textArea.getText());
                    os.flush();
                }
             catch(Exception ex){}
            
      

  7.   

    if(e.getSource()==MyButton)
            {
                try
                {
                    os.print(textArea.getText());
                    os.flush();
                }
             catch(Exception ex){}
    改成
            if(e.getSource()==MyButton)
            {
                try
                {
                    os.print(textArea.getText());
                    os.flush();
                }
             catch(Exception ex){System.out.println(ex);}
    看看控制台有何错误信息,俺开始帮你调试时也出现你所说的问题,后来看到有错误,就知道了
    好运
      

  8.   

    原理一样啊
    给你一个例子(没用户界面的,是命令模式下的通信,自己可以改一下)
    import java.net.*;
    import java.io.*;
    public class myServer{
     public static void main(String args[]){
      ServerSocket server;
      Socket sSocket;
      String hStr;
      InputStream fIn;
      OutputStream fOut;
      DataInputStream DIn;
      PrintStream hPS;
      try{
      server=new ServerSocket(4821);
      sSocket=server.accept();
      System.out.println("the server is on!");
      fIn=sSocket.getInputStream();
      fOut=sSocket.getOutputStream();
      DIn=new DataInputStream(fIn);
            hPS=new PrintStream(fOut);
      DataInputStream Userin=new DataInputStream(System.in);
      while(true){
      System.out.println("wait for the client...");
      hStr=DIn.readLine();
      System.out.println("client say: "+hStr);
      if(hStr.trim().equals("exit"))
      break;
      System.out.print("I say:");
      hStr=Userin.readLine();
      hPS.println(hStr);
      if(hStr.trim().equals("exit"))
      break;
      }
      DIn.close();
      hPS.close();
      fIn.close();
      fOut.close();
      sSocket.close();
            }catch(Exception e){
    System.out.println("err:"+e);
                                }
            }
    }
    ------------------------------------------------------------
    import java.net.*;
    import java.io.*;public class myClient 
    {
    public static void main(String[] args) 
    {
    Socket socket;
    String hStr;
    InputStream fIn;
    OutputStream fOut;
    DataInputStream DIn;
    PrintStream hPS;
    try{
    socket=new Socket("218.197.196.104",4821);
    System.out.println("the Client is on");
    fIn=socket.getInputStream();
    fOut=socket.getOutputStream();
    DIn=new DataInputStream(fIn);
    hPS=new PrintStream(fOut);
    DataInputStream Userin=new DataInputStream(System.in);
    while(true){
    System.out.print("send message:");
    hStr=Userin.readLine();
    hPS.println(hStr);
    if(hStr.trim().equals("exit"))break;
    System.out.println("wait for server message..");
    hStr=DIn.readLine();
    System.out.println("server says:"+hStr);
    if(hStr.trim().equals("exit"))
    break;
    }
    DIn.close();
    hPS.close();
    fOut.close();
    fIn.close();
    socket.close();
    }
    catch(Exception e){
    System.out.println("err:"+e);
    }
    }
    }