📄 chatclient0.java
字号:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.applet.*;
public class chatclient extends Applet {
public static final int DEFAULT_PORT = 6001;
public Socket socket;
private Thread reader, writer;
public TextArea OutputArea;
public TextField InputArea;
public PrintStream out;
public String Name;
public UserInfoFrame NameFrame;
public void init() {
OutputArea = new TextArea(20,45);
NameFrame = new UserInfoFrame(this);
add(new Label("Internet Turbo Chat"));
add(OutputArea);
add(InputArea);
resize(400,400);
try {
socket = new Socket(getDocumentBase().getHost(),DEFAULT_PORT);
reader = new Reader(this, OutputArea);
out = new PrintStream(socket.getOutputStream());
reader.setPriority(3);
reader.start();
}
catch (IOException e) { System.err.println(e);}
}
public boolean handleEvent (Event evt) {
if (evt.target == InputArea)
{
char c = (char) evt.key;
if (c == '\n') {
String InLine = InputArea.getText();
out.println(Name + '>' + InLine);
InputArea.setText("");
return true;
}
}
else
if (evt.target == NameFrame) {
Name = (String) evt.arg;
out.println(Name);
return true;
}
return false;
}
// end of methods of class chatclient
class Reader extends Thread { // inner class
protected chatclient client;
private TextArea OutputArea;
public Reader(chatclient c, TextArea OutputArea) { // constructor
super("chatclient Reader");
this.client = c;
this.OutputArea = OutputArea;
}
public void run() {
DataInputStream in = null;
String line;
try {
in = new DataInputStream(client.socket.getInputStream());
while(true)
{
line = in.readLine();
if (line == null) {
OutputArea.setText("Server closed connection");
break;
}
OutputArea.append(line + '\n');
} // end of while
} // end of try
catch (IOException e) { System.out.println("Reader:" + e); }
finally {
try { if (in != null) in.close(); }
catch (IOException e) { System.exit(0);}
}
} // end of run()
} // end of class Reader
class UserInfoFrame extends Frame { // inner class
public TextField UserNameField;
public Applet parent;
public UserInfoFrame(Applet parent) { // constructor
UserNameField = new TextField(10);
this.parent = parent;
add("North",new Label ("Please enter your name and hit ENTER"));
add("South",UserNameField);
setSize(300,100);
show();
}
public boolean KeyDown(Event evt, int key) {
char c = (char) key;
if (c == '\n') {
Event NewEvent = new Event(this, Event.ACTION_EVENT, UserNameField.getText());
parent.postEvent(NewEvent);
dispose();
return true;
}
else
return false;
} // end of KeyDown()
} // end of class UserInfoFrame
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -