广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现单线程聊天室
  • 741
分享到

Java实现单线程聊天室

2024-04-02 19:04:59 741人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下 一. Socket api简介 1. Socket编程 Java.net.Socket类代表一个套接

本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下

一. Socket api简介

1. Socket编程

Java.net.Socket类代表一个套接字,并且为服务器程序提供了一种来监听客户端并与他们建立连接的一种机制.

套接字使用tcp提供了两台计算机之间的通信机制,客户端创建一个套接字并尝试连接服务器的套接字,当连接建立时,服务器就会创建一个Socket对象,客户端和服务器就可以通过Socket对象的写入和读取来进行通信,这就是聊天室的原理.

两台计算机使用套接字建立TCP连接时会出现以下步骤: 

  • 服务端实例化一个ServerSocket对象,表示通过服务器上的端口通信
  • 服务端调用ServerSocket的accept()方法,该方法将一直等待,直到客户端连接上服务器上给定的端口
  • 服务端正在等待时,一个客户端实例化一个Socket对象,指定服务器名称和端口号来请求连接
  • Socket类的构造函数试图将客户端连接到指定的服务器和端口号上,如果通信被建立,则在客户端创建一个Socket对象能够与服务端进行通信
  • 在服务端,accept()方法返回服务器上一个新的socket引用,该socket连接到客户端的socket

TCP是一个双向通信协议,连接建立后,通过使用I/O流进行通信,每一个socket都有一个输出流和输入流,客户端的输出流连接到服务端的输入流,服务端的输出流连接到客户端的输入流.

二. 实现单线程模式的聊天室

首先我们来理清整个编程的思路:

socket编程

1.创建项目:

     1.1 服务器模块ServerSocket
     1.2 客户端模块Socket

2. 服务器端

     2.1 创建serverScoket,绑定端口
     2.2 接收客户端连接,Socket
     2.3 通过Socket连接,发送和接收数据
     2.4 关闭ServerSocket/Socket

3. 客户端

     3.1 创建Socket,指定服务器的地址和端口号
     3.2 通过Socket发送和接收数据
     3.3 关闭Socket 

1. 服务端

package single;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
 

public class singleThreadserver {
    public static void main(String[] args) {
 
        try {
 
            //1. 创建服务端ServerSocket,监听6666端口
            ServerSocket serverSocket = new ServerSocket(6666);
            System.out.println("服务器启动..."+serverSocket.
                    getLocalSocketAddress());  //服务器启动,打印当前地址
 
            //2. 接收客户端连接
            Socket socket = serverSocket.accept();  //调用accept()方法
            System.out.println("接收到客户端连接..."+socket.
                    getRemoteSocketAddress());  //接收远程客户端
 
            //3. 接收和发送数据
            //3.1 接收数据
            InputStream inputStream = socket.getInputStream();  //获取字节流
            Scanner scanner = new Scanner(inputStream);   //字节流转字符流
            String message = scanner.nextLine();   //读数据,按行读,读一行
            System.out.println("收到客户端的消息:"+message); //打印接收到的消息
 
            //3.2 发送数据
            OutputStream outputStream = socket.getOutputStream();  //获取字节流
            OutputStreamWriter writer = new OutputStreamWriter(outputStream);//字节流转字符流
            writer.write("你好,客户端,我很好.\n");  //写数据
            writer.flush();  //刷新(网通信)
 
 
            //4. 关闭
            serverSocket.close();
            System.out.println("服务器关闭");
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 客户端 

package single;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
 

public class singleThreadclient {
    public static void main(String[] args) {
 
        try {
 
            //1. 创建Socket客户端,连接指定服务地址和端口号
            Socket socket = new Socket("127.0.0.1",6666);
            System.out.println("客户端创建..."+socket.
                    getLocalSocketAddress());  //客户端创建,打印当前地址
 
            //2. Socket发送和接收数据
            //2.1 发送数据
            OutputStream outputStream = socket.getOutputStream();  //获取字节流
            OutputStreamWriter writer = new OutputStreamWriter(outputStream);  //字节流转字符流
            writer.write("你好,服务器.\n");  //写数据
            writer.flush();  //刷新
 
            //2.2 接收数据
            InputStream inputStream = socket.getInputStream();  //获取字节流
            Scanner scanner = new Scanner(inputStream);  //字节流转字符流
            String message = scanner.nextLine();  //读数据,按行读
            System.out.println("接收到服务器的消息:"+message); //打印接收到的数据
 
            //3. 关闭
            socket.close();
            System.out.println("客户端关闭");
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java实现单线程聊天室

本文链接: https://www.lsjlt.com/news/167663.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现单线程聊天室
    本文实例为大家分享了Java实现单线程聊天室的具体代码,供大家参考,具体内容如下 一. Socket API简介 1. Socket编程 Java.net.Socket类代表一个套接...
    99+
    2022-11-13
  • Java实现多线程聊天室
    本文实例为大家分享了Java实现多线程聊天室的具体代码,供大家参考,具体内容如下 之前呢已经用单线程的方式来实现了聊天室,但其实它的功能并不齐全,下面用多线程来实现,功能会比单线程聊...
    99+
    2022-11-12
  • python3-001-多线程简单聊天室
            这次代码为python3编写,并且使用网络调试助手、与python3聊天室程序进行通信测试。1、先放干货代码,如下: 1 from socket import * 2 from threading import Th...
    99+
    2023-01-31
    多线程 聊天室 简单
  • Java多线程局域网聊天室的实现
    目录1.TCP2.套接字3.C/S架构4.多线程5.服务器客户端局域网聊天室 在学习了一个学期的java以后,觉得java真是博大精深,彻底放弃了因为c++而轻视java的心态,搞了...
    99+
    2022-11-12
  • Java多线程实现多人聊天室功能
    本文为大家分享了Java多线程实现多人聊天室功能的具体代码,供大家参考,具体内容如下 1.实验目的: 编写一个 Java 应用程序,实现图形界面多人聊天室(多线程实现),要求聊天室窗...
    99+
    2022-11-12
  • Java实现简单的聊天室功能
    本文实例为大家分享了Java实现简单聊天室功能的具体代码,供大家参考,具体内容如下 一、客户端的创建 1.我们可以用Socket来创建客户端 public class Client...
    99+
    2022-11-13
  • Java实现简单局域网聊天室
    本文实例为大家分享了Java实现简单局域网聊天室的具体代码,供大家参考,具体内容如下 Java 的Socket编程: 1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数...
    99+
    2022-11-12
  • Java聊天室之实现聊天室服务端功能
    目录一、题目描述二、解题思路三、代码详解多学一个知识点一、题目描述 题目实现:实现聊天室服务器端功能。运行程序,服务端等待客户端连接,并显示客户端的连接信息。 二、解题思路 创建一个...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 服务端
  • Java聊天室之实现聊天室客户端功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:实现聊天室客户端。运行程序,用户登录服务器后,可以从用户列表中选择单个用户进行聊天,也可以选择多个用户进行聊天。 二、...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 客户端
  • Java Socket+多线程实现多人聊天室功能
    本文实例为大家分享了Java Socket+多线程实现多人聊天室的具体代码,供大家参考,具体内容如下 思路简介 分为客户端和服务器两个类,所有的客户端将聊的内容发送给服务器,服务器接...
    99+
    2022-11-12
  • Java实现在线聊天室(层层递进)
    本文实例为大家分享了Java实现在线聊天室的具体代码,供大家参考,具体内容如下 - 本文讲述了从实现单个多个客户的收发信息(基础简易版),到各种实现代码的封装(oop版),实现群聊(...
    99+
    2022-11-13
  • AngularJS+Node.js实现在线聊天室
    不得不说,上手AngularJS比我想象得难多了,把官网提供的PhoneCat例子看完,又跑到慕课网把大漠穷秋的AngularJS实战系列看了一遍,对于基本的使用依然有很多说不清道不明的疑惑,于是决定通过做...
    99+
    2022-06-04
    在线 聊天室 AngularJS
  • Java实现聊天室界面
    本文实例为大家分享了Java实现聊天室界面的具体代码,供大家参考,具体内容如下 服务器端: package Server;   import java.awt.Toolkit; im...
    99+
    2022-11-13
  • Python怎么实现在线聊天室私聊
    本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更...
    99+
    2023-06-02
  • 微信小程序实现简单聊天室
    本文实例为大家分享了微信小程序实现简单聊天室的具体代码,供大家参考,具体内容如下 cha.js // pages/chat/chat.js // 获取小程序实例 let app ...
    99+
    2022-11-12
  • Java NIO怎么实现聊天室程序
    本文小编为大家详细介绍“Java NIO怎么实现聊天室程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java NIO怎么实现聊天室程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。服务端:package&n...
    99+
    2023-06-17
  • Java通过Socket实现简单多人聊天室
    本文实例为大家分享了Java通过Socket实现多人聊天室的具体代码,供大家参考,具体内容如下 Socket可以实现网络上两个程序通过双向通道进行数据的交换,此外它是Java中网络T...
    99+
    2022-11-12
  • JAVANIO实现简单聊天室功能
    本文实例为大家分享了JAVA NIO实现简单聊天室功能的具体代码,供大家参考,具体内容如下 服务端 初始化一个ServerSocketChannel,绑定端口,然后使用Selecto...
    99+
    2022-11-12
  • Node.js怎么实现简单聊天室
    这篇“Node.js怎么实现简单聊天室”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js怎么实现简单聊天室”文章吧...
    99+
    2023-07-04
  • Java Socket实现简易聊天室
    Java-Socket编程实现简易聊天室(TCP),供大家参考,具体内容如下 实现一个服务器接收多个客户端 测试: 首先启动服务器,然后启动三个客户端,输入三个不同的用户名,分别在聊...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作