?? clientskt.java
字號:
// 程序:客戶端線程類
// 范例文件:clientskt.java
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
class clientskt extends Thread
{
Socket skt; // 客戶端聯機Socket對象
InetAddress host; // 指定的服務端地址
int port; // 指定的服務端連接端口
BufferedReader theInputStream;
PrintStream theOutputStream;
String readin; // 服務端輸出的數據
ChatOneToOne chat; // 前端的Applet界面
public clientskt(String ip, int p, ChatOneToOne chat)
{
try {
// 取得服務端的InetAddress對象、通訊連接端口
host = InetAddress.getByName(ip);
port = p;
this.chat = chat;
}
catch (IOException e)
{
chat.ta.append(e.toString());
}
}
public void run()
{
try {
chat.ta.append("嘗試聯機......");
// 建立Socket對象并嘗試聯機
skt = new Socket(host, port);
chat.ta.append("聯機成功\n");
// 從InputStream建立讀取緩沖區
theInputStream = new BufferedReader(
new InputStreamReader(skt.getInputStream()));
// 從OutputStream中建立PrintStream對象
theOutputStream = new PrintStream(skt.getOutputStream());
// 讀取數據循環
while(true)
{
// 讀取服務端傳來的數據
readin = theInputStream.readLine();
// 將之附加在Applet的TextArea上
chat.ta.append(readin + "\n");
}
}
catch (SocketException e) // 聯機中斷時丟出此異常
{
chat.ta.append("聯機中斷!\n");
// 將所有的按鈕設定為可用
chat.clientBtn.setEnabled(true);
chat.serverBtn.setEnabled(true);
chat.tfaddress.setEnabled(true);
chat.tfport.setEnabled(true);
try {
// 關閉前面的Socket聯機,以便可再度聯機
skt.close();
}
catch (IOException err)
{
chat.ta.append(err.toString());
}
}
catch (IOException e)
{
chat.ta.append(e.toString());
}
}
// 客戶端丟出數據的方法
public void dataout(String data)
{
theOutputStream.println(data);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -