//客户端
package com.exercise;import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;public class Testclient extends JFrame implements ActionListener
{
private JTextArea jtup,jtdown;
private JButton jbt01, jbt02;
public Testclient()
{
init();
setBounds(100, 100, 380, 350);
setTitle("客户端");
setLayout(null);
}

public void init()
{ jbt01 = new JButton("发送");
jbt01.setBounds(50, 250, 100, 30);
jbt01.addActionListener(this); jbt02 = new JButton("关闭");
jbt02.setBounds(200, 250, 100, 30);
jbt02.addActionListener(this);
jtup = new JTextArea("文本框");
jtup.setBounds(30, 30, 300, 100);
// jt1.addAncestorListener(this);
jtup.setBackground(Color.CYAN);

jtdown = new JTextArea("发送文本框");
jtdown.setBounds(30, 150, 300, 80);
jtdown.setBackground(Color.GRAY); add(jtup);
add(jtdown);
add(jbt01);
add(jbt02); } public static void main(String args[])
{
Testclient t = new Testclient();
t.setVisible(true);
try
{
Socket s = new Socket("127.0.0.1", 55555);
DataInputStream dis = new DataInputStream(s.getInputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(
System.in)); DataOutputStream dos = new DataOutputStream(s.getOutputStream());

new Myclientwriter(br, dos).start();
new Myclientreader(dis).start(); }
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} } @Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub

}}class Myclientwriter extends Thread
{
private BufferedReader br;
private DataOutputStream dos;
String s="";
public Myclientwriter(BufferedReader br, DataOutputStream dos)
{
super();
this.br = br;
this.dos = dos;
}

@Override
public void run()
{
// TODO Auto-generated method stub
super.run();

while(true)
{
   try
{
s=br.readLine();
dos.writeUTF(s);
if("bye".equals(s))
{
System.out.println("客户机下线,程序关闭");
System.exit(0);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
}
class Myclientreader extends Thread
{
private DataInputStream dis;
String s=""; public Myclientreader(DataInputStream dis)
{
super();
this.dis = dis;
}

@Override
public void run()
{
// TODO Auto-generated method stub
super.run();
while(true)
{
try
{
s=dis.readUTF();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("服务器说"+s);
if("bye".equals(s))
{
System.out.println("服务器下线,程序停止");
System.exit(0);
}

}
}
}
//服务器
package com.exercise;import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;public class Testserver extends JFrame implements ActionListener
{
private static JTextArea jtup,jtdown;
private JButton jbt01, jbt02; public Testserver()
{
init();
setBounds(100, 100, 380, 350);
setTitle("服务器");
setLayout(null);
} public void init()
{ jbt01 = new JButton("发送");
jbt01.setBounds(50, 250, 100, 30);
jbt01.addActionListener(this); jbt02 = new JButton("关闭");
jbt02.setBounds(200, 250, 100, 30);
jbt02.addActionListener(this);
jtup = new JTextArea("接收文本框");
jtup.setBounds(30, 30, 300, 100);
jtup.setBackground(Color.cyan);
jtdown = new JTextArea("发送文本框");
jtdown.setBounds(30, 150, 300, 80);
jtdown.setBackground(Color.GRAY); add(jtup);
add(jbt01);
add(jbt02);
add(jtdown); }

public void setjt1(String s)
{
jtup.setText(s);
} public static void main(String[] args)
{
Testserver t = new Testserver();
t.setVisible(true); try
{
ServerSocket s = new ServerSocket(55555);
Socket s1 = s.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in)); DataOutputStream dos = new DataOutputStream(s1.getOutputStream()); DataInputStream dis = new DataInputStream(s1.getInputStream()); new MyServerreader(dis).start();
new MyServerwriter(br, dos).start();
}
catch (IOException e)
{
e.printStackTrace();
} } @Override
public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();
if (o == jbt01)
{
System.out.println("123");
} }}class MyServerreader extends Thread
{
private DataInputStream dis; public MyServerreader(DataInputStream dis)
{
super();
this.dis = dis;
} @Override
public void run()
{
// TODO Auto-generated method stub
super.run();
String str = "";
while (true)
{
try
{
str = dis.readUTF();
System.out.println("客户端说" + str);


if ("bye".equals(str))
{
System.out.println("客户端下线,程序停止!");
System.exit(0);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} }}class MyServerwriter extends Thread
{ private BufferedReader br;
private DataOutputStream dos; public MyServerwriter(BufferedReader br, DataOutputStream dos)
{
super();
this.br = br;
this.dos = dos;
} @Override
public void run()
{

super.run();
String s = "";
while (true)
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
dos.writeUTF(s = br.readLine());
if ("bye".equals(s))
{
System.out.println("我是服务器,我要退出了");
System.exit(0);
} }
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} } }}