📄 chatserversocket.java
字号:
//【例10.2】 采用Socket通信实现的聊天室程序。
//② Socket通信中的服务端程序
import java.net.*;
import java.io.*;
public class ChatServerSocket
{
private ChatJFrame chatframe; //聊天室的图形用户界面
private ServerSocket server; //提供TCP连接服务的ServerSocket对象
private Socket client; //与客户端通信的Socket对象
public ChatServerSocket(int port, String name) //约定端口号、网名
{
try
{
server = new ServerSocket(port); //创建ServerSocket对象,提供TCP连接服务
client = server.accept(); //等待接收一个客户端的连接申请
//连接成功后返回一个已连接的Socket对象
BufferedReader cin = new BufferedReader(new InputStreamReader(client.getInputStream()));
//获得Socket对象的输入流,创建字符输入流
PrintWriter cout = new PrintWriter(client.getOutputStream(), true);
//获得Socket对象的输出流,创建字符输出流
chatframe = new ChatJFrame(name," 服务端 端口"+port,cout); //创建聊天室的图形用户界面
chatframe.receive("连接 "+cin.readLine()); //接收并显示已连接的对方网名
cout.println(name); //将自己网名发送给对方
String aline = "";
do //从输入流接收对方发来的字符串
{
aline = cin.readLine(); //读取一行字符串,输入流结束时返回null
if (aline!=null && !aline.equals("bye")) //"bye"是约定离线信息
chatframe.receive(aline);
}while (aline!=null && !aline.equals("bye"));
chatframe.setWriter(null); //设置聊天室界面的输出流对象为空
cin.close();
cout.close();
client.close(); //关闭Socket连接
server.close(); //停止等候客户端的连接请求
}
catch(IOException e) {}
}
public static void main(String args[])
{
new ChatServerSocket(2001,"小岛"); //约定端口号,指定网名
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -