96SEO 2026-02-19 23:04 0
{//继承窗口来实现窗口功能/*设置接受客户端的集合,把接入服务器的客户端存入集合,方便后续的消息转发*/ArrayListSocket

ArrayList();/*由于下面线程需要调用窗口的一些东西,所以需要全局变量*/JTextArea
JTextArea(30,20);//只能设置几列JButton
BorderLayout());//显示消息this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭窗口结束程序this.setTitle(来自客户端的消息);this.setSize(500,
JTextArea();//显示客户端的信息jTextArea.setEditable(false);//不可以修改
JScrollPane(jTextArea);priorPanel.add(clientInformation,BorderLayout.CENTER);//写一个发布公告的窗口JPanel
JScrollPane(jTextSend);jScrollPane.setPreferredSize(new
Dimension(400,50));sendPanel.add(jScrollPane);sendPanel.add(jButtonSend);priorPanel.add(sendPanel,BorderLayout.SOUTH);this.add(priorPanel);//创建监听发送键
jButtonSend.addActionListener(new
{/*用来对每个客户端发送公告*/Overridepublic
来自服务器的公告:jTextSend.getText()\n;//把公告发布到聊天界面jTextArea.append(announcement);/*使用for循环来遍历每个客户端的对象*/for(Socket
soc:socketsClients){DataOutputStream
DataOutputStream(soc.getOutputStream());dataOutputStream.writeUTF(announcement\n);}
{ioException.printStackTrace();}}jTextSend.setText(null);}});this.setVisible(true);
ServerSocket(9998);//使用无限循环来不停接受客户端的连接while(true){Socket
serverSocket.accept();//接收到一个就向集合加入一个客户端socketsClients.add(socketClient);//就收一个连接就在后台提示一遍System.out.println(有socketsClients.size()个邓钦文连接到服务器!);//然后启动该客户端的线程
SocketThread(socketClient).start();}//处理客户端输入的东西}
{e.printStackTrace();System.out.println(服务器启动失败!);}}//创建监听//创建内部类
DataInputStream(socket.getInputStream());this.socket
dataInputStream.readUTF();/*读取客户端的信息
并打印到自己的窗口上*/jTextArea.append(msg\n);//给每一个客户端发送信息
soc:socketsClients){DataOutputStream
DataOutputStream(soc.getOutputStream());dataOutputStream.writeUTF(msg\n);}}
{e.printStackTrace();System.out.println(读取失败!);socketsClients.remove(socket);return;}}}}}客户端
{this.setSize(600,500);this.setTitle(欢迎登录);this.setResizable(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭窗口结束程序this.setLocationRelativeTo(this);JPanel
JLabel(欢迎登录);jLabel.setFont(new
Font(宋体,Font.BOLD,30));//中间部分JPanel
JTextField(15);jPanelAccount.add(jLabelAccount);jPanelAccount.add(jTextFieldAccount);JPanel
JPasswordField(15);jPanelPassword.add(jLabelPassword);jPanelPassword.add(jTextFieldPassword);//底部
JButton(注册);jPanelButton.add(enterButton);jPanelButton.add(signButton);jPanelTop.add(jLabel);jPanelMiddle.add(jPanelAccount);jPanelMiddle.add(jPanelPassword);jPanelFoot.add(jPanelButton);jPanelLast.add(jPanelTop);jPanelLast.add(jPanelMiddle);jPanelLast.add(jPanelFoot);this.add(jPanelLast);this.setVisible(true);
来判断用户的读取enterButton.addActionListener(new
//1.判断不能为空if(jTextFieldAccount.getText().length()0||jTextFieldPassword.getText().length()0)
{JOptionPane.showMessageDialog(null,
//2.输入只能为数字与字母if((jTextFieldAccount.getText().matches([a-zA-Z0-9]*)jTextFieldPassword.getText().matches([a-zA-Z0-9]*))false){JOptionPane.showMessageDialog(null,输入的账号或密码只能为字母和数字);return;}//如果都满足了登录成功
ChatFrame(jTextFieldAccount.getText(),socket);dispose();//关闭了登录窗口}
{ioException.printStackTrace();JOptionPane.showMessageDialog(null,无法连接服务器);}}});}}聊天界面
600);this.setTitle(欢迎来到account聊天室);this.setResizable(true);this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);JPanel
BorderLayout());//最终面板jTextArea
JTextArea();jTextArea.setEditable(false);JScrollPane
JScrollPane(jTextArea);jPanelEnd.add(jScrollPane1,BorderLayout.CENTER);JPanel
JTextArea(5,40);//带滑动的窗口JScrollPane
JScrollPane(jTextArea2);//不能通过add加入,只能通过构造方法加入,这样不会出现不显示的问题jPanelInput.add(jScrollPane2);JButton
JButton(发送);jPanelInput.add(jButtonSend);jPanelEnd.add(jPanelInput,BorderLayout.SOUTH);this.add(jPanelEnd);try
{e.printStackTrace();JOptionPane.showMessageDialog(null,发送错误);}
//关闭窗口,显示登录窗口this.addWindowListener(new
{System.out.println(你确定要关闭我妈?);int
JOptionPane.showConfirmDialog(null,你确定要关闭我吗,操作提示,JOptionPane.OK_CANCEL_OPTION);if(res0){//点击确定new
EnterFrame();dispose();//关闭当前对象}}});//监听发送事件try
DataOutputStream(socket.getOutputStream());String
socketOutput.toString();jButtonSend.addActionListener(new
{if(message.length()0){JOptionPane.showMessageDialog(null,输入消息不能为空!);return;}String
{socketOutput.writeUTF(msg);System.out.println(msg);jTextArea2.setText();}
{ioException.printStackTrace();JOptionPane.showMessageDialog(null,发生错误);}}});}
{e.printStackTrace();}this.setVisible(true);
DataInputStream(socket.getInputStream());this.socket
{while(true){/*把接受的到信息添加到窗口中*/String
inputStream.readUTF();jTextArea.append(msg\n);}}
{e.printStackTrace();return;}}}
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback