【Java--实现(同局域网)简单聊天案例】
Java–实现(同局域网)简单聊天案例
(代码如下,需要练习请自取)
注:下列都需要在idea中完成,客户端和服务端都要运行才可链接一者断开两者程序都结束运行
单线程
只能实现一个客户端连接
客户端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.SocketException;
import java.util.Scanner;public class Client {public static void main(String[] args) {//客户端try{Socket c = new Socket("127.0.0.1",6666);//此处ip地址为客户端ip//“6666”为服务端设置的口令相当于密码PrintWriter out = new PrintWriter(c.getOutputStream()); //发信息BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); //接信息while(true) {//发信息System.out.println("发信息:");String msg = new Scanner(System.in).nextLine() + "\r\n";out.write(msg);out.flush();//先收信息String info = br.readLine();System.out.println(info);}}catch(Exception e){e.printStackTrace();}}
}
服务端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Server {public static void main(String[] args) {//List<Socket> lists = new ArrayList<>();//服务器try {//System.out.println(InetAddress.getLocalHost().getHostAddress());ServerSocket server = new ServerSocket(6666);//“6666”设置口令相当于密码Socket c = server.accept();System.out.println("有人上线");PrintWriter out = new PrintWriter(c.getOutputStream()); //发信息BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); //接信息while (true) {//先收信息String msg = br.readLine();System.out.println(msg);//发信息System.out.println("发信息:");String info = new Scanner(System.in).nextLine() + "\r\n";out.write(info);out.flush();}//while(true) {// Socket c = server.accept();//中断// lists.add(c);// System.out.println("有人连线");//}} catch (Exception e) {e.printStackTrace();}}
}
多线程
能实现多个客户端连接服务端
服务端
服务端的实现方法
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.util.Scanner;public class ChatUtil {private PrintWriter writer;private BufferedReader reader;private String title;public ChatUtil(PrintWriter writer, BufferedReader reader, String title) {this.writer = writer;this.reader = reader;this.title = title;}/*** 发信息*/public void a() {while (true) {//发信息String info = title + ":" + new Scanner(System.in).nextLine() + "\r\n";writer.write(info);writer.flush();}}public void b() {while (true) {try {//先收信息String msg = reader.readLine();//System.out.println(msg);} catch (Exception e) {e.printStackTrace();}}}public PrintWriter getWriter() {return writer;}public void setWriter(PrintWriter writer) {this.writer = writer;}public BufferedReader getReader() {return reader;}public void setReader(BufferedReader reader) {this.reader = reader;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}}
服务端的执行程序
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket server = new ServerSocket(6666);Socket c = server.accept();PrintWriter writer = new PrintWriter(c.getOutputStream());BufferedReader reader = new BufferedReader(new InputStreamReader(c.getInputStream()));ChatUtil cu = new ChatUtil(writer,reader,"服务器");new Thread(cu::a).start();new Thread(cu::b).start();}catch (Exception e) {e.printStackTrace();}}
}
客户端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client {public static void main(String[] args) {try{Socket c = new Socket("127.0.0.1",6666);PrintWriter writer = new PrintWriter(c.getOutputStream());BufferedReader reader = new BufferedReader(new InputStreamReader(c.getInputStream()));ChatUtil cu = new ChatUtil(writer,reader,"客户");new Thread(cu::a).start();new Thread(cu::b).start();}catch(Exception e){e.printStackTrace();}}
}
【Java--实现(同局域网)简单聊天案例】相关推荐
- java多线程创建一个简单的案例
1.创建一个简单的线程,不需要去创建个Runnable Thread thread = new Thread(new Runnable() {@Overridepublic void run() {/ ...
- Java实现的一个简单聊天软件
介绍 这是我自己学习Socket时写的,用到了多线程,Socket的知识,还有Java的IO技术,并且做了一个Java的UI,废话不多说,先上效果图 SendThread 这个类是用来实现数据的发送的 ...
- JAVA基于局域网的聊天室系统(源代码+论文)
毕业论文 局域网聊天室系统的设计与实现 论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名(职称): 论文提交日期: 基于局域网的视频聊天室系统的设计与实现 摘 要 视频聊天系统作为一种新型 ...
- Java网络编程学习——简单模拟在线聊天
Java网络编程学习--简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了. 本次案例将使用UDP和多线程模拟即时聊天,简单练练手. 1.前提知识 需要知道简单的IO流操作,以及简单的U ...
- java 网络编程简单聊天_网络编程之 TCP 实现简单聊天
网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...
- java web利用mvc结构实现简单聊天室功能
简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是: 1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进 ...
- java扫描局域网中可用ip_使用java线程扫描局域网ip简单方案
package com.cjh.thread; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...
- java jsp聊天系统_java web实现简单聊天室
目标 servlet.jsp实现简单聊天室,用户通过浏览器登录后进入聊天室,可发送消息进行群聊,点击聊天信息框中的用户名可实现拍一拍功能. 基础知识 数据的存取 setAttribute / getA ...
- Java网络编程以及简单的聊天程序
网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的.这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件. 全部代码下载:链接 1.网络编 ...
最新文章
- 短序列拼接软件velvet简介
- Java开发必会的Linux命令
- Linux tomcat日志分割按天分割
- c语言编写期末考试成绩,C语言期末考试卷(A卷含答案).doc
- 【MySQL】ERROR 1055 (42000) ROUP BY clause this is incompatible with sql_mode=only_full_group_by
- python的神经网络模块接法图解_图神经网络库PyTorch geometric
- python先序中序后序的非递归版本
- 多人共享协作画板——多人画板
- Cannot negotiate authentication mechanism svn: Unable to connect to a repository at URL 'svn://gite
- 期货连续合约跳空处理
- ps的cc版本安装包以及破解包
- Steam帐号被盗怎么办
- 仓库货架通道宽度的设计要求和注意事项
- bouncycastle
- 纯php 给pdf加水印,如何使用PHP为现有PDF文件添加水印?
- 便携电源快充方案 30W自动升降压PD快充
- html如何让table表格垂直(上下)居中
- 诚之和:绿茶等茶凉上市? 单店日均销售额降盈利指标不敌同行
- 十四、圣经是蒙恩的凭藉
- php连接mysql测试脚本,php MySQL连接测试
热门文章
- 【逗老师的小技巧】win10 l2tp ipsec 无法连接解决方案
- 计算机课作业在线管理,数学与计算机学院课程作业规范化管理办法
- 『创意欣赏』60款惊艳的 iOS App 图标设计《第四季》
- 安卓版 Xmind 1.3.7 — 思维导图工具
- 数字电路-NE555脉冲电路
- jsp 上传转码_Java实现视频网站的视频上传、视频转码、及视频播放功能(ffmpeg)...
- 117页数字化转型与产业互联网发展趋势及机会分析报告(PPT)
- OA系统二:项目介绍:需求介绍;功能展示;
- 顶级创业者的思维方式
- 2D游戏入门——小狐狸系列(六)为人物添加动画