看教程看到网络编程部分;这个就是怎么也运行不了;高手给解决一下.         TcpFuwuqiTest.java  
=============================
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.Toolkit;
import javax.swing.*;
import javax.swing.Box;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class TcpFuwuqiTest extends JFrame implements ActionListener
{
JFrame frame;
JPanel contentpane,panel2;
JTextArea  textarea;
JScrollPane panel3;
JButton allowLink;
JButton send;
JButton button;
JLabel message;
JLabel kehu;
JTextField  textField;
JComboBox box1;
ServerSocket server;
Socket connection;
InputStream is;
OutputStream os;
BufferedReader br;
PrintWriter pw;
String client;
int port1;

TcpFuwuqiTest()
{
JFrame frame=new JFrame("服务器端");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(450,300);

JPanel contentpane=new JPanel();
JPanel panel2=new JPanel();


JTextArea textarea=new JTextArea(15,10);
JScrollPane panel3=new JScrollPane(textarea);

JButton allowLink=new JButton("接受连接");

JButton send=new JButton("发送");
send.addActionListener(this);
JTextField textField=new JTextField(20);
JComboBox box1=new JComboBox();

JLabel message=new JLabel("消息 :");
JLabel kehu=new JLabel("客户端 :");

Toolkit kit = Toolkit.getDefaultToolkit();
Image image = kit.getImage("Ghosthuo.jpg");
frame.setIconImage(image);


    Box hbox1 = Box.createHorizontalBox();
    hbox1.add(allowLink);
    allowLink.addActionListener(this);
    // 添加一个20像素的支柱
    hbox1.add(Box.createHorizontalStrut(20));
    hbox1.add(message);
    hbox1.add(Box.createHorizontalStrut(20));
    hbox1.add(textField);      Box hbox2 = Box.createHorizontalBox();
    hbox2.add(Box.createHorizontalStrut(105));     
    hbox2.add(kehu);
    // 添加一个20像素的支柱
    hbox2.add(Box.createHorizontalStrut(8));
    hbox2.add(box1);
    hbox2.add(Box.createHorizontalStrut(20));
    hbox2.add(send);    
    
    Box vbox = Box.createVerticalBox();
    vbox.add(hbox1);
    vbox.add(hbox2);

frame.setContentPane(contentpane);
contentpane.setLayout(new BorderLayout());
contentpane.add(vbox,BorderLayout.NORTH);
contentpane.add(panel3,BorderLayout.CENTER);

frame.setSize(450,300);
frame.setVisible(true);
frame.pack();

serverStart();
}

public void actionPerformed(ActionEvent event)
{
JButton button = (JButton)event.getSource();
if(button== allowLink)
{
try
{
allowLink.setEnabled(false);
connection=server.accept();
textarea.append("LocalPort:"+server.getLocalPort()+"\n");
client=connection.getInetAddress().toString();
box1.addItem(client);
textarea.append("client1 has connected: "+client+"\n");
port1=connection.getPort();
textarea.append("Port:"+port1+"\n");
Thread t1=new Thread(new receiver(),"client1");
t1.start();
}
catch(Exception es)
{
JOptionPane.showMessageDialog(this,"Error: "+es.toString());
}
}
else if(button == send)
{
String set="";
if(connection!=null)
{
try
{
set=message.getText()+"\n";
textarea.append("To client1:"+set);
pw.write(set);
pw.flush();
message.setText("");
}
catch(Exception es)
{
JOptionPane.showMessageDialog(this,"Error:"+ es.toString());
}
}
}

}

public void serverStart()
{
try
{
ServerSocket server=new ServerSocket(6666);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"Error: "+ e.toString());
}
}


class receiver implements Runnable
{
public receiver()
{
}
public void run()
{
try
{
is=connection.getInputStream();
os=connection.getOutputStream();
br=new BufferedReader(new InputStreamReader(is));
pw=new PrintWriter(os);
}
catch(Exception ex)
{
}
String get="";
while(true)
{
try
{
get=br.readLine();
if(get!=null)
{
if(!get.equals("e"))
{
textarea.append("From "+Thread.currentThread().getName()+":"+get+"\n");
}
else
{
is.close();
os.close();
pw.close();
br.close();
box1.removeItem(client);
break;
}
}
}
catch(Exception ex)
{
}
}
}
} public static void main(String[] args) 
{
// TODO: 在这添加你的代码
new TcpFuwuqiTest();
}

}

解决方案 »

  1.   

    一个是服务器端一个是客户端,怎么不能发送信息呀/客户端:
                              TcpKehuTest.java
    ============================================================
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.Toolkit;
    import java.lang.Thread;
    //import javax.swing.JScrollPane;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class TcpKehuTest extends JFrame implements ActionListener
    {
    JFrame frame;
    JPanel contentpane;
    Socket connection;
    InputStream is;
    OutputStream os;
    BufferedReader br;
    PrintWriter pw;
    JTextArea textarea;
    JButton linkServer;
    JButton send;
    Thread t1=null; TcpKehuTest()
    {
    JFrame frame=new JFrame("客户端");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel contentpane=new JPanel();
    JPanel north=new JPanel();
    JTextArea textarea=new JTextArea(20,20);
    JScrollPane jsp1=new JScrollPane(textarea);

    JButton linkServer=new JButton("连接服务器");
    JLabel message=new JLabel("消息");
    JTextField text1=new JTextField(20);
    JButton send=new JButton("发送");

    Toolkit kit = Toolkit.getDefaultToolkit();
    Image image = kit.getImage("Ghosthuo.jpg");
    frame.setIconImage(image);

    frame.setContentPane(contentpane);
    contentpane.setLayout(new BorderLayout());
    contentpane.add(north,BorderLayout.NORTH);
    contentpane.add(jsp1,BorderLayout.CENTER);
    north.add(linkServer);
    north.add(message);
    north.add(text1);
    north.add(send);

    linkServer.addActionListener(this);
    send.addActionListener(this);

      frame.setSize(450,300);
    frame.setVisible(true);
    frame.pack();

    } public static void main(String[] args) 
    {
    new TcpKehuTest();
    }

    class receiver implements Runnable
    {
    public receiver()
    {
    }
    public void run()
    {
    String get="";
    while(true)
    {
    try
    {
    get =br.readLine();
    if(get!=null)
    {
    textarea.append("From server:"+get+"\n");
    }
    }
    catch(Exception ex)
    {
    }
    }
    }
    }
    public void actionPerformed(ActionEvent e)
      {

    JButton button = (JButton)e.getSource();
    if(button == linkServer)
    {
    try
    {
    connection=new Socket (InetAddress.getLocalHost(),6666);
    JOptionPane.showMessageDialog(this,"连接成功");
    } catch(Exception es)
    {
    JOptionPane.showMessageDialog(this,"Error:"+es.toString());
    }
    try
    {
    linkServer.setEnabled(false);
    is=connection.getInputStream();
    os=connection.getOutputStream();
    br=new BufferedReader(new InputStreamReader(is));
    pw=new PrintWriter(os);
    t1=new Thread(new receiver());
    t1.start();
    }
    catch(Exception ex)
    {
    JOptionPane.showMessageDialog(this,"Error:"+ex.toString());
    }

    }
    else if(button == send)
    {
    String set="";
    if (connection!=null)
    {
    try
    {
    set=textarea.getText()+"\n";
    textarea.append("To server:"+set);
    pw.write(set);
    pw.flush();
    if(set.equals("e\n"))
    {
    is.close();
    os.close();
    pw.close();
    br.close();
    connection.close();
    send.setEnabled(true);
    }
    textarea.setText("");
    }
    catch(Exception es)
    {
    JOptionPane.showMessageDialog(this,"Error:"+es.toString());
    }
    }
    }
        }  
    }
      

  2.   

    你这个代码错误太多了至少有好几处概念性错误比如成员变量在构造函数中被同名的局部变量覆盖 
    获得输入信息应该是从TextField 不是Label ....
      

  3.   

    改了半个小时 可以通信了 只能运行同时运行一个客户端
    要支持多个用户 自己改改吧
    //////////////////////client///////////////////import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;public class TcpClient extends JFrame implements ActionListener {
    JFrame frame; JPanel contentpane;
    JTextField text1 ;

    Socket connection; InputStream is; OutputStream os; BufferedReader br; PrintWriter pw; JTextArea textarea; JButton linkServer; JButton send; Thread t1 = null; TcpClient() {
    frame = new JFrame("客户端");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    contentpane = new JPanel();
    JPanel north = new JPanel();
     textarea = new JTextArea(20, 20);
    JScrollPane jsp1 = new JScrollPane(textarea); linkServer = new JButton("连接服务器");
    JLabel message = new JLabel("消息");
     text1 = new JTextField(20);
    send = new JButton("发送"); Toolkit kit = Toolkit.getDefaultToolkit();
    Image image = kit.getImage("Ghosthuo.jpg");
    frame.setIconImage(image); frame.setContentPane(contentpane);
    contentpane.setLayout(new BorderLayout());
    contentpane.add(north, BorderLayout.NORTH);
    contentpane.add(jsp1, BorderLayout.CENTER);
    north.add(linkServer);
    north.add(message);
    north.add(text1);
    north.add(send); linkServer.addActionListener(this);
    send.addActionListener(this); frame.setSize(450, 300);
    frame.setVisible(true);
    frame.pack(); } public static void main(String[] args) {
    new TcpClient();
    } class receiver implements Runnable {
    public receiver() {
    } public void run() {
    String get = "";
    while (true) {
    try {
    get = br.readLine();
    if (get != null) {
    textarea.append("From server:" + get + "\n");
    }
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }
    } public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource();
    if (button == linkServer) {
    try {
    connection = new Socket(InetAddress.getLocalHost(), 9999);
    JOptionPane.showMessageDialog(this, "连接成功");
    } catch (Exception es) {
    es.printStackTrace();
    JOptionPane.showMessageDialog(this, "Error:" + es.toString());
    }
    try {
    linkServer.setEnabled(false);
    is = connection.getInputStream();
    os = connection.getOutputStream();
    br = new BufferedReader(new InputStreamReader(is));
    pw = new PrintWriter(os);
    t1 = new Thread(new receiver());
    t1.start();
    } catch (Exception ex) {
    ex.printStackTrace();
    JOptionPane.showMessageDialog(this, "Error:" + ex.toString());
    } } else if (button == send) {
    String set = "";
    if (connection != null) {
    try {
    set = text1.getText() + "\n";
    textarea.append("To server:" + set);
    pw.write(set);
    pw.flush();
    if (set.equals("e\n")) {
    is.close();
    os.close();
    pw.close();
    br.close();
    connection.close();
    send.setEnabled(true);
    }
    text1.setText("");
    } catch (Exception es) {
    es.printStackTrace();
    JOptionPane.showMessageDialog(this, "Error:"
    + es.toString());
    }
    }
    }
    }
    }
      

  4.   

    //////////////////Server/////////
    import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;public class TcpServer extends JFrame implements ActionListener {
    int myport = 9999; JFrame frame; JPanel contentpane, panel2; JTextArea textarea; JScrollPane panel3; JButton allowLink; JButton send; JButton button; JLabel message; JLabel kehu; JTextField textField; JComboBox box1; ServerSocket server; Socket connection; InputStream is; OutputStream os; BufferedReader br; PrintWriter pw; String client; int port1; TcpServer() {
    frame = new JFrame("服务器端");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setSize(450, 300); contentpane = new JPanel();
    panel2 = new JPanel(); textarea = new JTextArea(15, 10);
    JScrollPane panel3 = new JScrollPane(textarea); allowLink = new JButton("接受连接"); send = new JButton("发送");
    send.addActionListener(this);
    textField = new JTextField(20);
    box1 = new JComboBox(); message = new JLabel("消息 :");
    kehu = new JLabel("客户端 :"); Toolkit kit = Toolkit.getDefaultToolkit();
    Image image = kit.getImage("Ghosthuo.jpg");
    frame.setIconImage(image); Box hbox1 = Box.createHorizontalBox();
    hbox1.add(allowLink);
    allowLink.addActionListener(this);
    // 添加一个20像素的支柱
    hbox1.add(Box.createHorizontalStrut(20));
    hbox1.add(message);
    hbox1.add(Box.createHorizontalStrut(20));
    hbox1.add(textField); Box hbox2 = Box.createHorizontalBox();
    hbox2.add(Box.createHorizontalStrut(105));
    hbox2.add(kehu);
    // 添加一个20像素的支柱
    hbox2.add(Box.createHorizontalStrut(8));
    hbox2.add(box1);
    hbox2.add(Box.createHorizontalStrut(20));
    hbox2.add(send); Box vbox = Box.createVerticalBox();
    vbox.add(hbox1);
    vbox.add(hbox2); frame.setContentPane(contentpane);
    contentpane.setLayout(new BorderLayout());
    contentpane.add(vbox, BorderLayout.NORTH);
    contentpane.add(panel3, BorderLayout.CENTER); frame.setSize(450, 300);
    frame.setVisible(true);
    frame.pack(); serverStart();
    } public void actionPerformed(ActionEvent event) {
    JButton button = (JButton) event.getSource(); if (button == allowLink) {
    try {
    allowLink.setEnabled(false);
    new Thread(new ServerListen()).start(); } catch (Exception es) {
    es.printStackTrace();
    JOptionPane.showMessageDialog(this, "Error: " + es.toString());
    }
    } else if (button == send) {
    String set = "";
    if (connection != null) {
    try {
    set = textField.getText() + "\n";
    textarea.append("To client1:" + set);
    pw.write(set);
    pw.flush();
    textField.setText("");
    } catch (Exception es) {
    System.out.println(es);
    JOptionPane.showMessageDialog(this, "Error:"
    + es.toString());
    }
    }
    } } public void serverStart() {
    try {
    server = new ServerSocket(myport);
    System.out.println("Server started............");
    } catch (Exception e) {
    System.out.println(e.toString());
    JOptionPane.showMessageDialog(this, "Error: " + e.toString());
    }
    }
        
    //对每个客户端的连接 都有一个Receiver 线程来处理IO
    class receiver implements Runnable {
    public receiver() {
    } public void run() {
    try {
    is = connection.getInputStream();
    os = connection.getOutputStream();
    br = new BufferedReader(new InputStreamReader(is));
    pw = new PrintWriter(os);
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    String get = "";
    while (true) {
    try {
    get = br.readLine();
    if (get != null) {
    if (!get.equals("e")) {
    textarea.append("From "
    + Thread.currentThread().getName() + ":"
    + get + "\n");
    } else {
    is.close();
    os.close();
    pw.close();
    br.close();
    box1.removeItem(client);
    break;
    }
    }
    } catch (Exception ex) {
    }
    }
    }
    } class ServerListen implements Runnable {
    public void run() {
    System.out.println("Server is Listening.............."); // 保持监听状态
    while (true) {
    try {
    connection = server.accept();
    } catch (Exception ee) {
    ee.printStackTrace();
    }
    if (connection != null) {
    textarea
    .append("LocalPort:" + server.getLocalPort() + "\n");
    client = connection.getInetAddress().toString();
    box1.addItem(client);
    textarea.append("client1 has connected: " + client + "\n");
    port1 = connection.getPort();
    textarea.append("Port:" + port1 + "\n");
    Thread t1 = new Thread(new receiver(), "client1");
    t1.start();
    }
    } } } public static void main(String[] args) {
    // TODO: 在这添加你的代码
    TcpServer server = new TcpServer();
    // System.out.println(server.allowLink+"###############################");
    }}