📄 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; // 服务端输出的数据
ClientFrame chat; // 前端的Applet界面
public clientskt(String ip, int p, ClientFrame chat)
{
try {
this.chat = chat;
// 取得服务端的InetAddress对象、通讯连接端口
host = InetAddress.getByName(ip);
port = p;
}
catch (IOException e)
{
chat.TAChat.append("ww"+e.toString());
}
}
public void run()
{
try {
chat.TAChat.append("尝试联机......");
skt = new Socket(host, port); // 建立Socket对象并尝试联机
chat.TAChat.append("联机成功\n");
theInputStream = new BufferedReader( // 从InputStream建立读取缓冲区
new InputStreamReader(skt.getInputStream()));
theOutputStream = new PrintStream(skt.getOutputStream());// 从OutputStream中建立PrintStream对象
while(true) // 读取数据循环
{
readin = theInputStream.readLine();// 读取服务端传来的数据
chat.TAChat.append(readin + "\n");// 将之附加在Applet的TextArea上
chat.TAChat.setCaretPosition(chat.TAChat.getDocument().getLength()-1);
// chat.TAChat.getAutoscrolls(); ??
}
}
catch (SocketException e) // 联机中断时丢出此异常
{
chat.TAChat.append("联机中断!\n");
chat.TFAddress.setEnabled(true); // 设定按钮与输入框是否可用
chat.loginBtn.setEnabled(true);
chat.ptpAddress.setEnabled(false);
chat.ptpChatBtn.setEnabled(false);
chat.closeButton.setEnabled(false);
try {
skt.close();// 关闭前面的Socket联机,以便可再度联机
}
catch (IOException err)
{
chat.TAChat.append(err.toString());
}
}
catch (IOException e)
{
chat.TAChat.append(e.toString());
}
}
// 客户端丢出数据的方法
public void dataout(String data)
{
theOutputStream.println(data);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -