import java.awt.*;
import java.awt.event.*;
import java.io.*;
import http://www.doczj.com/doc/a5e3fa7702768e9951e738f7.html.*;
import java.util.*;
public class SocketTalk extends Frame implements ActionListener,WindowListener {
TextField field,id,message;
Button button,bid,btmsg,close;
byte[] c=new byte[1000];
Socket socket;
private final int MAXUSER=10;
private Daemon daemons[];
public ServerSocket svsocket;
public Vector clients;
TextField port;
Button btstart;
TextArea tamsg;
Panel panel1,panel2;
public static void main(String args[]) {
SocketTalk test=new SocketTalk();
test.addWindowListener(test);
test.setSize(800,400);
test.setVisible(true);
}
public SocketTalk(){
setTitle("JAVA简易聊天");
panel1=new Panel();
panel1.setLayout(new FlowLayout());
TextField tf=new TextField("输入连接端口,开启Socket");
tf.setBackground(Color.white);
tf.setEditable(false); //提示用,不可编辑
panel1.add(tf);
port=new TextField("3388");
panel1.add(port);
btstart=new Button("开始");
btstart.addActionListener(this);
panel1.add(btstart);
add(panel1,BorderLayout.NORTH);
panel2=new Panel();
panel2.setLayout(new FlowLayout());
panel2.add(new Label("IP地址: "));
field=new TextField(20);
panel2.add(field);
button=new Button("连接");
panel2.add(button);
button.addActionListener(this);
id=new TextField(10);
panel2.add(id);
bid=new Button("确认昵称");
panel2.add(bid);
bid.addActionListener(this);
bid.enable(false);
message=new TextField(20);
panel2.add(message);
btmsg=new Button("发送");
btmsg.enable(false);
panel2.add(btmsg);
btmsg.addActionListener(this);
close=new Button("关闭");
panel2.add(close);
close.addActionListener(this);
add(panel2,BorderLayout.SOUTH);
tamsg=new TextArea();
tamsg.setBackground(Color.PINK);
tamsg.append("输入你要链接的地址,然后按(link)按钮\n");
add(tamsg,BorderLayout.CENTER);
setBackground(Color.white);
}
public void actionPerformed(ActionEvent e) {
int i;
String strmsg;
String label=((Button)e.getSource()).getLabel();
if(http://www.doczj.com/doc/a5e3fa7702768e9951e738f7.htmlpareTo("开始")==0) {
try {
int po=Integer.parseInt(port.getText());
svsocket=new ServerSocket(po);
daemons=new Daemon[MAXUSER];
clients=new Vector();
for (int j=0;jdaemons[j]=new Daemon(this);
daemons[j].start();
}
tamsg.append("Listening to port 3388......\n");
}
catch (IOException ioe) {
tamsg.append("IOException:"+ioe.getMessage());
}
}
else if(http://www.doczj.com/doc/a5e3fa7702768e9951e738f7.htmlpareTo("连接")==0)
{
try {
socket=new Socket(field.getText(),3388);
button.enable(false);
bid.enable(true);
DataInputStream is=new DataInputStream(socket.getInputStream());
i=is.read(c);
tamsg.append(new String(c,0,i));
}
catch (Exception exc) {
tamsg.append("error happended link\n");
tamsg.append(exc.toString());
}