?? client.java
字號:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client extends JPanel implements Runnable {
private JTextField tf = new JTextField();
private JTextArea ta = new JTextArea();
private JScrollPane js = new JScrollPane(ta);
// 連接服務器
private Socket socket;
// 獲得輸入流輸出流
private DataOutputStream dout;
private DataInputStream din;
// 構(gòu)造
public Client(String host, int port) {
// 布局
setLayout(new BorderLayout());
add("North", tf);
add("Center", js);
// 注冊事件監(jiān)聽 并且 發(fā)送信息到服務器
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
processMessage(e.getActionCommand());//獲得文本區(qū)內(nèi)容
}
});
//連接服務器
try{
socket = new Socket(host,port);
System.out.println("connected to "+socket);
//獲得輸入輸出流
din = new DataInputStream(socket.getInputStream());
dout = new DataOutputStream(socket.getOutputStream());
//調(diào)用構(gòu)造時,運行線程
new Thread(this).start();//防止阻塞
}
catch(IOException ie)
{
System.out.println(ie);
}
}
private void processMessage(String message)
{
try
{
dout.writeUTF(message);
//清空文本框
tf.setText("");
}
catch(IOException ie)
{
System.out.println(ie);
}
}
//線程---用于 讀取 服務器 聊天信息
public void run()
{
try
{
while(true)
{
String message= din.readUTF();
//將讀取的聊天信息,添加 到 ta中
ta.append(message+"\n");
}
}
catch(IOException ie)
{
System.out.println(ie);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -