返回顶部
首页 > 资讯 > 精选 >怎么用Java创建多线程局域网聊天室
  • 693
分享到

怎么用Java创建多线程局域网聊天室

2023-06-20 14:06:42 693人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么用Java创建多线程局域网聊天室”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java创建多线程局域网聊天室”吧!局域网聊天室在学习了一个学期的java以后,觉

这篇文章主要讲解了“怎么用Java创建多线程局域网聊天室”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java创建多线程局域网聊天室”吧!

局域网聊天室

在学习了一个学期的java以后,觉得java真是博大精深,彻底放弃了因为c++而轻视java的心态,搞了一个多线程的聊天室,熟悉了一下服务器和客户机的操作。

1.tcp

要实现局域网连接,就必须知道信息传输的原理。
在局域网里面传输的信息都是以包的形式,我使用的TCP包传输数据,TCP包里面封装了IP报文。
下面这句话就是通过一个静态IPV4协议的类得到一个服务器的IP地址。

address = InetAddress.getByName("192.168.43.86");

2.套接字

在TCP中得到了服务器的IP地址,但是光凭IP地址无法对具体应用进行定,所以引入了套接字这个概念。端口号用来锁定主机的进程。端口号一般取1024~49151,因为0 ~ 1023是熟知端口号,一般用于一些Http等等常用的端口,49152 ~ 65535是临时端口号,也不能随机占用,一般是程序运行过程中的临时分配。
套接字=IP+端口号
这句话就是定义一个端口号9998和IP为192.168.43.86的套接字。

int port = 9998;Socket = new Socket(address,port);

3.C/S架构

怎么用Java创建多线程局域网聊天室

从Java类的角度看,服务器和客户端通过套接字连接抽象了一个连接。服务器通过建立自己的套接字端口并监听有无客户在此端口连接,实现信息的读取功能。客户机通过服务器约定好的端口号,来对服务器进行传输数据。在服务器开启后,运行客户机,将与服务器进行三次握手建立TCP连接,然后在此连接的基础上,实现客户机与服务器的通信。

4.多线程

由于服务器可能同时服务多个对象,若是采用传统的方法进行服务器连接,则会出现多个客户机等待一个客户机与服务器交互的现象。为了解决这个问题,采用多线程的方法。
用SuperSocket类继承socket类并实现Runnable接口,实现多线程运行。

class SuperSocket extends Socket implements Runnable
SuperSocket socket_1 = new SuperSocket(9999);SuperSocket socket_2 = new SuperSocket(9998);SuperSocket socket_3 = new SuperSocket(9997);Thread s1 = new Thread(socket_1);Thread s2 = new Thread(socket_2);Thread s3 = new Thread(socket_3);

5.服务器

服务器的架构第三部分所示,代码实现如下

package TCP;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class TCPserver2 {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        //实例化具有多线程功能的服务器专用socket类        //需要传递端口号作为初始化变量        SuperSocket socket_1 = new SuperSocket(9996);        SuperSocket socket_2 = new SuperSocket(9998);        SuperSocket socket_3 = new SuperSocket(9997);        //建立三个子线程        Thread s1 = new Thread(socket_1);        Thread s2 = new Thread(socket_2);        Thread s3 = new Thread(socket_3);        try {            while(true) {            //开启线程                s1.start();                s2.start();                s3.start();                if(scan.next()=="123"){                //结束线程                    break;                }            }        } finally {            try {            //关闭套接字                socket_1.close();                socket_2.close();                socket_3.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}class SuperSocket extends Socket implements Runnable{    InputStream is;    byte[] buffer;    Socket socket=null;    ServerSocket serverSocket=null;    public SuperSocket(int port){        try {        //初始服务器型套接字            serverSocket = new ServerSocket(port);            buffer = new byte[1024];        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void run() {        try {        //等待端口连接            socket = serverSocket.accept();            //连接完成后创建输入流            is = socket.getInputStream();            //读取客户端传送信息            int len = is.read(buffer);            String str = new String(buffer, 0, len);            System.out.println(str);        } catch (IOException e) {            e.printStackTrace();        }    }}

客户端

客户端的架构第三部分所示,代码实现如下

package TCP;import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class TCPclient {    public static void main(String[] args) {        InetAddress address=null;        Socket socket=null;        OutputStream os=null;        String message=null;        Scanner sca=null;        try {            //得到本机IP地址            address = InetAddress.getByName("192.168.43.86");            //规定端口号,建立套接字            int port = 9998;            socket = new Socket(address,port);            //绑定套接字的输出流            os = socket.getOutputStream();            sca = new Scanner(System.in);            while(true) {                message = sca.next();                //写入输出流,在局域网中传输                os.write(message.getBytes());            }        } catch (UnknownHostException e) {            e.printStackTrace();        }catch (IOException e) {            e.printStackTrace();        }finally {            try {            //关闭端口号,关闭io流                os.close();                socket.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

搞定,虽然特别简陋,但是也能实现局域网类的通信。如果需要的,记得改一下服务器的IP地址,IP地址可以在cmd下用ipconfig命令查看。打算期末考试完了以后再加上GUI并把这个功能加到具有alpha剪枝算法的AI六子棋对战中去。

感谢各位的阅读,以上就是“怎么用Java创建多线程局域网聊天室”的内容了,经过本文的学习后,相信大家对怎么用Java创建多线程局域网聊天室这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么用Java创建多线程局域网聊天室

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

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

猜你喜欢
  • 怎么用Java创建多线程局域网聊天室
    这篇文章主要讲解了“怎么用Java创建多线程局域网聊天室”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java创建多线程局域网聊天室”吧!局域网聊天室在学习了一个学期的java以后,觉...
    99+
    2023-06-20
  • Java创建多线程局域网聊天室实例
    局域网聊天室 在学习了一个学期的java以后,觉得java真是博大精深,彻底放弃了因为c++而轻视java的心态,搞了一个多线程的聊天室,熟悉了一下服务器和客户机的操作。 1.TCP...
    99+
    2024-04-02
  • Java多线程局域网聊天室的实现
    目录1.TCP2.套接字3.C/S架构4.多线程5.服务器客户端局域网聊天室 在学习了一个学期的java以后,觉得java真是博大精深,彻底放弃了因为c++而轻视java的心态,搞了...
    99+
    2024-04-02
  • Java怎么用局域网实现聊天室功能
    这篇文章主要介绍了Java怎么用局域网实现聊天室功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用局域网实现聊天室功能文章都会有所收获,下面我们一起来看看吧。类和接口Server类(服务器端)pa...
    99+
    2023-06-30
  • Java用局域网实现聊天室功能
    本文实例为大家分享了Java用局域网实现聊天室的具体代码,供大家参考,具体内容如下 类和接口 Server类(服务器端) package Test; import java.io...
    99+
    2024-04-02
  • 怎么使用java创建聊天室
    要使用Java创建一个聊天室,你需要以下步骤:1. 创建一个服务器端:创建一个Java类作为服务器,并使用Java的Socket和S...
    99+
    2023-09-17
    java
  • Java实现简单局域网聊天室
    本文实例为大家分享了Java实现简单局域网聊天室的具体代码,供大家参考,具体内容如下 Java 的Socket编程: 1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数...
    99+
    2024-04-02
  • Java实现多线程聊天室
    本文实例为大家分享了Java实现多线程聊天室的具体代码,供大家参考,具体内容如下 之前呢已经用单线程的方式来实现了聊天室,但其实它的功能并不齐全,下面用多线程来实现,功能会比单线程聊...
    99+
    2024-04-02
  • Java实现局域网聊天室功能(私聊、群聊)
    本文实例为大家分享了Java实现局域网聊天室功能的具体代码,供大家参考,具体内容如下 Server 服务端 import java.io.IOException; import ja...
    99+
    2024-04-02
  • java+socket实现简易局域网聊天室
    本文实例为大家分享了java+socket实现简易局域网聊天室的具体代码,供大家参考,具体内容如下 服务器端 ServerFrame.java package com.eze.cha...
    99+
    2024-04-02
  • 怎么用Java Socket+多线程实现多人聊天室功能
    这篇文章主要讲解了“怎么用Java Socket+多线程实现多人聊天室功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java Socket+多线程实现多人聊天室功能”吧!思路简介分...
    99+
    2023-06-20
  • Java多线程实现多人聊天室功能
    本文为大家分享了Java多线程实现多人聊天室功能的具体代码,供大家参考,具体内容如下 1.实验目的: 编写一个 Java 应用程序,实现图形界面多人聊天室(多线程实现),要求聊天室窗...
    99+
    2024-04-02
  • 怎么用java socket实现局域网聊天
    这篇文章主要介绍“怎么用java socket实现局域网聊天”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用java socket实现局域网聊天”文章能帮助大家解决问题。代码...
    99+
    2023-06-30
  • Java Socket+多线程实现多人聊天室功能
    本文实例为大家分享了Java Socket+多线程实现多人聊天室的具体代码,供大家参考,具体内容如下 思路简介 分为客户端和服务器两个类,所有的客户端将聊的内容发送给服务器,服务器接...
    99+
    2024-04-02
  • Android使用多线程进行网络聊天室通信
    TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信了。Java对基于TCP协议的网络通信提供了良好的封装,Ja...
    99+
    2023-05-30
    android 聊天室 roi
  • Java实现局域网聊天小程序
    本文实例为大家分享了Java实现局域网聊天的具体代码,供大家参考,具体内容如下 开发环境: IDEA 2018.2 集成开发工具。 实现功能: 1、用户上线,向服务器通知并注册。 2...
    99+
    2024-04-02
  • C++基于socket多线程实现网络聊天室
    本文实例为大家分享了C++基于socket多线程实现网络聊天室的具体代码,供大家参考,具体内容如下 1. 实现图解 2. 聊天室服务端:TCP_Server_Chat.cpp ...
    99+
    2024-04-02
  • java课程设计做一个多人聊天室(socket+多线程)
    目录课设要求相关知识点1.服务端能够看到所有在线用户2.服务端能够强制用户下线3.客户端能够看到所有在线用户4.客户端要求能够向某个用户发送消息5.运用JDBC实现持久化存储用户信息6.使用JSONObject对象封装数据7.使用Maven...
    99+
    2014-10-09
    java课程设计 毕业设计 java多人聊天室
  • Java网络编程怎么实现多线程聊天
    这篇文章将为大家详细讲解有关Java网络编程怎么实现多线程聊天,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。聊天程序如果是单线程,会导致没人只能说一句,并且说了以后,必须等到另一个人的回复,才能说第二句。...
    99+
    2023-06-20
  • 怎么使用Java NIO实现多人聊天室
    本篇内容主要讲解“怎么使用Java NIO实现多人聊天室”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Java NIO实现多人聊天室”吧!NIO服务端public&n...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作