?? clientapplet.java
字號:
// 程序:多人聊天室客戶端程序
// 范例文件:ClientApplet.java
import java.io.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.awt.event.*;
public class ClientApplet extends Applet
implements Runnable,ActionListener
{
int sPort; //服務器程序接口
String sName; //服務器位置
Socket cSocket; //連往服務器的插座
boolean dead;
PrintStream write; //I/O管道
BufferedReader read;
Thread T; //用來接收訊息的線程
Font F;
Panel south;
Button sendMessage;
TextArea Message;
TextField send;
public void init()
{
setLayout(new BorderLayout()); //使用BorderLayout
dead = false;
//建立接口相關AWT組件
F = new Font("Dialog",Font.BOLD,16);
south = new Panel();
sendMessage = new Button("傳送訊息");
Message = new TextArea();
send = new TextField(40);
south.add(send);
south.add(sendMessage);
Message.setFont(F); //設定字型
Message.setEditable(false); //不可編輯
Message.append("歡迎使用良葛格的聊天室\n\n");
Message.setBackground(Color.black); //設定背景顏色
Message.setForeground(Color.white); //設定前景顏色
add(south,BorderLayout.SOUTH);
add(Message,BorderLayout.CENTER);
sendMessage.addActionListener(this); //注冊按鈕的事件處理方法
try
{
sPort = 6633; //指定服務器接口
sName = getDocumentBase().getHost(); //指定服務器位置
cSocket = new Socket(sName,sPort); //建立插座
//建立I/O管道
write = new PrintStream(cSocket.getOutputStream());
read = new BufferedReader(
new InputStreamReader(cSocket.getInputStream()));
}
catch(UnknownHostException E) //建立插座失敗
{
Message.append("發生異常: 無法識別的主機!");
sendMessage.setEnabled(false);
}
catch(IOException E) //建立I/O管道失敗
{
Message.append("發生異常: 建立I/O管道失敗!");
sendMessage.setEnabled(false);
}
T = new Thread(this); //建立接收訊息線程
T.start(); //啟動線程
}
public void run()
{
String m;
while(!dead)
{
try
{
m = read.readLine(); //接收訊息
if(m != null)
{
Message.append("\n" + m); //將訊息加入TextArea中
}
}
catch(IOException E) //發生異常
{
Message.append("\n\n遠程服務器已關閉或網絡聯機發生錯誤...");
Message.append("\n\n請嘗試重新聯機...");
sendMessage.setEnabled(false);
break;
}
}
}
public void finalize()
{
try
{
read.close();
write.close();
cSocket.close(); //關閉服務器程序聯機
}
catch(IOException E){}
cSocket = null; //釋放資源
}
//=====實現ActionListener=========================================
public void actionPerformed(ActionEvent e)
{
if(send.getText().equals("")) //輸入為空白
{
return;
}
else if(send.getText().equals("bye"))
{
dead = true;
Message.append("\n已結束聯機.....");
}
write.println(send.getText()); //發送訊息
send.setText(""); //清除文字區域
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -