Java聊天室之实现运行服务器与等待客户端连接
作者:小虚竹and掘金 发布时间:2023-11-23 08:16:17
标签:Java,聊天室
一、题目描述
题目实现:运行服务器程序,等待客户端程序连接。
二、解题思路
首先需要在服务器中建立服务器套接字,并等待客户程序的连接。
创建一个类:ServerSocketFrame,继承JFrame
通过ServerSocket类创建绑定到指定端口的服务器套接字对象。然后调用ServerSocket类的accept()方法监听客户端的连接。
实例化Socket对象
server = new ServerSocket(9527); // 可指定端口
三、代码详解
ServerSocketFrame
package com.xiaoxuzhu;
import java.awt.BorderLayout;
import java.net.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* Description: 服务器中建立服务器套接字,并等待客户程序的连接。
*
* @author xiaoxuzhu
* @version 1.0
*
* <pre>
* 修改记录:
* 修改后版本 修改人修改日期修改内容
* 2022/5/29.1 xiaoxuzhu2022/5/29 Create
* </pre>
* @date 2022/5/29
*/
public class ServerSocketFrame extends JFrame {
private JTextArea ta_info;
private ServerSocket server; // 声明ServerSocket对象
private Socket socket; // 声明Socket对象socket
public void getServer() {
try {
server = new ServerSocket(9527); // 实例化Socket对象
ta_info.append("服务器套接字已经创建成功\n"); // 输出信息
while (true) { // 如果套接字是连接状态
ta_info.append("等待客户机的连接......\n"); // 输出信息
socket = server.accept(); // 监听客户端连接
ta_info.append("连接成功......\n");//有客户端连接上,才算监听成功,会输入这一段
}
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}
}
public static void main(String[] args) { // 主方法
ServerSocketFrame frame = new ServerSocketFrame(); // 创建本类对象
frame.setVisible(true);
frame.getServer(); // 调用方法
}
public ServerSocketFrame() {
super();
setTitle("建立服务器套接字");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 260, 167);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);
ta_info = new JTextArea();
scrollPane.setViewportView(ta_info);
}
}
实现效果
来源:https://juejin.cn/post/7154570781584785439


猜你喜欢
- 本文实例讲述了android编程实现添加文本内容到sqlite表中的方法。分享给大家供大家参考,具体如下:第一步: 创建表CREATE TA
- 本文实例讲述了c#中datagridview处理非绑定列的方法。分享给大家供大家参考。具体实现方法如下:using System;using
- 1、fragment简介我对fragment的理解是基于activity的,对于大多数的基本开始发时,我们最先遇到的就是用activity来
- 前言本次示例代码的文件结构如下图所示。1. 导入依赖坐标在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐
- 电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下
- 前言飞行棋小游戏是学习C#以来,接触的第一个游戏项目,根据小杨老师的思路引导,自己的代码也实现了功能,经过思路的梳理,试着不借助代码自己去实
- 写在前面“The origin server did not find a current representation for the t
- 概述关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,既
- Java单例模式的实现,对java 单例模式的几种实现方法进行了整理:单例模式好多书上都是这么写的:public class SingleT
- 自定义控件是根据自己的需要自己来编写控件。安卓自带的控件有时候无法满足你的需求,这种时候,我们只能去自己去实现适合项目的控件。同时,安卓也允
- springboot对压缩请求的处理最近对接银联需求,为了节省带宽,需要对报文进行压缩处理。但是使用springboot自带的压缩设置不起作
- 前言作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以
- Spring Boot1.为什么要使用 Spring Boot因为Spring, SpringMVC 需要使用的大量的配置文件 (xml文件
- 鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下。一、介绍Android Studio Andr
- flutter material widget组件之信息展示组件,供大家参考,具体内容如下widget分为两类:widgets librar
- Android Studio下载(下文统称AS)AS最新版下载请戳:AS下载Android SDK下载SDK安装器下载SDK安装器下载请戳:
- 线程中run()和start()的区别:对于Thread对象来说,当你调用的是start(),线程会被放到等待队列,等待CPU调度,不一定马
- 以前传统的比较方式是遍历图片中的每一个像素,然后进行比对。这样的比对在少量图片的比对上虽然效率低一点,但是也没有什么不好。但是在大量图片比对
- 实例如下:public String stripHtml(String content) { // <p>段落替换为换行 con
- 1、未配置之前2、开始配置 2.1 新建一个unauth.html<!DOCTYPE html><html la