📄 serverskt.java
字号:
// 程序:服务端线程类
// 范例文件:serverskt.java
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
class serverskt extends Thread
{
ServerSocket skt; // 服务端ServerSocket
Socket Client; // 接收的客户端Socket
TextArea in;
BufferedReader theInputStream; // 读取客户端数据的缓冲区
PrintStream theOutputStream; // 将数据丢出给客户端的对象
String readin; // 从客户端读到的资料
ChatOneToOne chat; // 前端Applet界面
public serverskt(int port, ChatOneToOne chat)
{
try {
// 根据指定的连接端口建立Socket对象
skt = new ServerSocket(port);
this.chat = chat;
}
catch (IOException e)
{
chat.ta.append(e.toString());
}
}
public void run()
{
try {
chat.ta.append("等待联机......");
// 开始接受联机,客户端联机之后会得到Socket对象
Client = skt.accept();
chat.ta.append("客户端" + Client.getInetAddress() + "已联机\n");
// 建立读取缓冲区
theInputStream = new BufferedReader(
new InputStreamReader(Client.getInputStream()));
// 建立数据丢出对象
theOutputStream = new PrintStream(Client.getOutputStream());
// 利用循环读取数据
while(true)
{
readin = theInputStream.readLine();
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 {
// 关闭ServerSocket与Socket
skt.close();
Client.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 + -