版本0.2,实现功能:实现客户端与服务器端的文本传输
客户端:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
new Client().launchFrame();
}
void launchFrame() {
new MyFrame("chat");
}
}
class MyFrame extends Frame {
private TextField tf;
private TextArea ta;
String sf;
Socket sk = null;
OutputStream os = null;
DataOutputStream dos = null;
MyFrame(String si) {
super(si);
this.setBounds(300, 300, 400, 300);
tf = new TextField();
ta = new TextArea();
this.add(tf, BorderLayout.SOUTH);
this.add(ta, BorderLayout.NORTH);
try {
sk = new Socket("127.0.0.1", 6666);
os = sk.getOutputStream();
dos = new DataOutputStream(os);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.addWindowListener(new MyWindowListner());
tf.addActionListener(new MyActionListener());
pack();
setVisible(true);
}
class MyWindowListner extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
try {
dos.writeUTF("close");
dos.close();
sk.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.exit(0);
}
}
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
sf = tf.getText();
ta.append(sf + "\n");
tf.setText("");
try {
dos.writeUTF(sf);
dos.flush();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
服务器端:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
String str = null;
boolean started = false;
ServerSocket ss;
try {
started = true;
ss = new ServerSocket(6666);
while (started) {
boolean bConnected = false;
Socket s = ss.accept();
System.out.println("a client has been connected!");
bConnected = true;
while (bConnected) {
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
str = dis.readUTF();
System.out.println(str);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}