📄 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 + -