看教程看到网络编程部分;这个就是怎么也运行不了;高手给解决一下. 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();
}
}
=============================
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();
}
}
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());
}
}
}
}
}
获得输入信息应该是从TextField 不是Label ....
要支持多个用户 自己改改吧
//////////////////////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());
}
}
}
}
}
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+"###############################");
}}