这个是客户端的程序:
package as;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class CharClientText extends JFrame implements ActionListener{ /**
 * @param args
 */
JLabel jl = new JLabel("输入您要说的话");
JPanel jp = new JPanel();
JTextField jtf = new JTextField(15);
JTextArea jta = new JTextArea(10,10);
Socket sk=null;
BufferedReader br;
BufferedWriter bof;
PrintWriter pw; public CharClientText()
{
    super("Client 端");
Container con = getContentPane();
        jp.add(jl);
    jp.add(jtf);
    con.add(jp,BorderLayout.SOUTH);
    con.add(jta,BorderLayout.CENTER);
    jtf.addActionListener(this);
addWindowListener(new WindowAdapter()
{
       public void windowClosing(WindowEvent e)
       {
        System.exit(0);
       }
}
);
setSize(300,250);
    show();
        try 
        {
         Socket sk = new Socket("localhost",9000);
         jta.append("已连接到服务器"+sk.getInetAddress().getHostName()+"\n");
pw = new PrintWriter(sk.getOutputStream(),true);

        catch (UnknownHostException e) 
{
e.printStackTrace();

        catch (Exception e)
        {
e.printStackTrace();
}
   } 
public void actionPerformed(ActionEvent arg0) 
{

try {
   String str = jtf.getText();
   jtf.setText("");
   pw.write(str);
   jta.append("Client:"+str+"\n");
   
} catch (Exception e) {
e.printStackTrace();
} }
public static void main(String[] args)
{
         new CharClientText();
}
}
这个是服务器的程序:package as;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class CharServerText extends JFrame implements ActionListener
{ JLabel jl = new JLabel("输入您要说的话");
JPanel jp = new JPanel();
JTextField jtf = new JTextField(15);
JTextArea jta = new JTextArea(10,10);
ServerSocket ss=null;
Socket sk=null;
BufferedReader br=null;
public CharServerText()
{
    super("Server 端");
Container con = getContentPane();
        jp.add(jl);
    jp.add(jtf); 
    con.add(jp,BorderLayout.SOUTH);
    con.add(jta,BorderLayout.CENTER);
    jtf.addActionListener(this);
addWindowListener(new WindowAdapter()
{
       public void windowClosing(WindowEvent e)
       {
        System.exit(0);
       }
}
);
setSize(300,250);
    show();
try
  {
 ss = new ServerSocket(9000);
 sk = ss.accept();
 jta.append("已连接到客户机"+sk.getInetAddress().getHostName()+"\n");
 br = new BufferedReader(new InputStreamReader(sk.getInputStream()));
 System.out.println("1");
 
 while(true)
 {
 String ii=br.readLine();
 System.out.println("1");
 if(ii!=null){
 System.out.println("1");  
        jta.append("Client:"+ii);
 }
 System.out.println("2");
 }

  } 
catch (Exception e) 
  {
 e.printStackTrace();
  }
finally
{
try {
ss.close();
sk.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
    

public void actionPerformed(ActionEvent arg0)
{

}
public static void main(String[] args)
{
         new CharServerText();
}
}
代码多了点。。请个位朋友帮助看一下或运行一下。

解决方案 »

  1.   


    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.*;
    import java.net.Socket;
    import java.net.UnknownHostException;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;public class CharClientText extends JFrame implements ActionListener{ /**
     * @param args
     */
    JLabel jl = new JLabel("输入您要说的话");
    JPanel jp = new JPanel();
    JTextField jtf = new JTextField(15);
    JTextArea jta = new JTextArea(10,10);
    Socket sk=null;
    BufferedReader br;
    BufferedWriter bof;
    PrintWriter pw; public CharClientText()
    {
        super("Client 端");
    Container con = getContentPane();
            jp.add(jl);
        jp.add(jtf);
        con.add(jp,BorderLayout.SOUTH);
        con.add(jta,BorderLayout.CENTER);
        jtf.addActionListener(this);
    addWindowListener(new WindowAdapter()
    {
           public void windowClosing(WindowEvent e)
           {
            System.exit(0);
           }
    }
    );
    setSize(300,250);
        show();
            try 
            {
             Socket sk = new Socket("localhost",9000);
             jta.append("已连接到服务器"+sk.getInetAddress().getHostName()+"\n");
    pw = new PrintWriter(sk.getOutputStream(),true);

            catch (UnknownHostException e) 
    {
    e.printStackTrace();

            catch (Exception e)
            {
    e.printStackTrace();
    }
       } 
    public void actionPerformed(ActionEvent arg0) 
    {

    try {
       String str = jtf.getText();
       
       jtf.setText("");
       pw.println(str);// modify here 
       jta.append("Client:"+str+"\n");
       
    } catch (Exception e) {
    e.printStackTrace(); 
    } }
    public static void main(String[] args)
    {
             new CharClientText();
    }
    }
      

  2.   

    谢谢您...haisenmai这位兄弟,,,我懂了...很感谢您
      

  3.   

    不过,我想问您一下...write()和println()这两个方法有什么不同啊...不都是写吗....
      

  4.   

    pw.println(str);换成 pw.print(str); 照样不行 
    服务器那里是
    String ii=br.readLine();
    所以这里发过去要搞个回车换行吧
    哈哈