import java.awt.Rectangle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class kehuduan extends JFrame { private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField jTextField = null;
private JScrollPane jScrollPane = null;
private JTextArea jTextArea = null;
private JButton jButton = null;
PrintWriter writer;
Socket sock; // @jve:decl-index=0:
BufferedReader reader; // @jve:decl-index=0:
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(90, 108, 164, 22));
}
return jTextField;
} /**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(65, 2, 204, 84));
jScrollPane.setViewportView(getJTextArea());
}
return jScrollPane;
} /**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
}
return jTextArea;
} /**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(150, 145, 68, 24));
jButton.setText("发送");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
writer.println(jTextField.getText());
writer.flush();
jTextField.setText("");
jTextField.requestFocus();
Thread readerThread=new Thread(new IncomingReader());
readerThread.start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
}
return jButton;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
kehuduan thisClass = new kehuduan();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
};
/**
* This is the default constructor
*/
private void setUpNetworking(){
try {
sock=new Socket("127.0.0.1",5000);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
InputStreamReader steamReader=new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(steamReader);
writer=new PrintWriter(sock.getOutputStream());
System.out.println("networking established");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public kehuduan() {
super();
initialize();
} /**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(358, 236);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
setUpNetworking();
}
public class IncomingReader implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
String message;
try {
while((message=reader.readLine())!=null){
System.out.println("read"+message);
jTextArea.append(message+"\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} /**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextField(), null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}} // @jve:decl-index=0:visual-constraint="309,6"
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class kehuduan extends JFrame { private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField jTextField = null;
private JScrollPane jScrollPane = null;
private JTextArea jTextArea = null;
private JButton jButton = null;
PrintWriter writer;
Socket sock; // @jve:decl-index=0:
BufferedReader reader; // @jve:decl-index=0:
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(90, 108, 164, 22));
}
return jTextField;
} /**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(65, 2, 204, 84));
jScrollPane.setViewportView(getJTextArea());
}
return jScrollPane;
} /**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
}
return jTextArea;
} /**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(150, 145, 68, 24));
jButton.setText("发送");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
writer.println(jTextField.getText());
writer.flush();
jTextField.setText("");
jTextField.requestFocus();
Thread readerThread=new Thread(new IncomingReader());
readerThread.start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
}
return jButton;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
kehuduan thisClass = new kehuduan();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
};
/**
* This is the default constructor
*/
private void setUpNetworking(){
try {
sock=new Socket("127.0.0.1",5000);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
InputStreamReader steamReader=new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(steamReader);
writer=new PrintWriter(sock.getOutputStream());
System.out.println("networking established");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public kehuduan() {
super();
initialize();
} /**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(358, 236);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
setUpNetworking();
}
public class IncomingReader implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
String message;
try {
while((message=reader.readLine())!=null){
System.out.println("read"+message);
jTextArea.append(message+"\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} /**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextField(), null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}} // @jve:decl-index=0:visual-constraint="309,6"
你的程序没问题,只是需要有个Server端,sock=new Socket("127.0.0.1",5000);
这句就是和Server端连接的。所以给你个server 端程序,先运行,再运行你的客户端就行了。import java.io.*;
import java.net.*;
public class Server1 extends ServerSocket //注意新的用法.
{
private static final int SERVER_PORT = 5000;
public Server1() throws IOException
{
super(SERVER_PORT);
try
{
while (true)
{
Socket socket = accept();
new CreateServerThread(socket);
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
close();
}
}
//--- CreateServerThread
class CreateServerThread extends Thread //inner class.
{
private Socket client;
private BufferedReader in;
private PrintWriter out;
public CreateServerThread(Socket s) throws IOException
{
client = s;
in = new BufferedReader(new InputStreamReader(
client.getInputStream(), "GB2312"));
out = new PrintWriter(client.getOutputStream(), true);
out.println("--- Welcome ---");
start(); //start at the constructor.
}
public void run()
{
try
{
String line = in.readLine();
while (!line.equals("bye"))
{
String msg = createMessage(line);
out.println(msg);
System.out.println(msg);
line = in.readLine();
}
out.println("--- See you, bye! ---");
client.close();
}
catch (IOException e)
{
e.printStackTrace();
}
} private String createMessage(String line)
{
return client.getInetAddress().getHostName()+client.getPort()+":"+line;
}
}
public static void main(String[] args) throws IOException
{
new Server1();
}
}
你把线程关了,不会往回发数据了,窗口不会回显了。