Java Socket通信之聊天室功能

发布时间:2020-10-17 14:36:00

来源:脚本之家

阅读:73

作者:LY_624

本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下

Client.java

import java.io.*;

import java.net.*;

import java.util.*;

public class Client {

public int port = 8083;

Socket socket = null;

public static void main(String[] args) {

new Client(); //开始执行

}

public Client() {

try {

socket = new Socket("127.0.0.1", port);

new Cthread().start();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String msg1;

while ((msg1 = br.readLine()) != null) {

System.out.println(msg1);

}

} catch (Exception e) {

}

}

class Cthread extends Thread {

public void run() {

try {

BufferedReader re = new BufferedReader(new InputStreamReader(System.in));

PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);

String msg2;

while (true) {

msg2 = re.readLine();

pw.println(msg2);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

Server.java

import java.net.*;

import java.io.*;

import java.util.*;

public class Server {

int port;

List clients;

ServerSocket server;

public Server() {

try {

port = 8083;

clients = new ArrayList();

server = new ServerSocket(port);

System.out.println("服务器已启动");

int co=1;

while (true) {

Socket socket = server.accept();

clients.add(socket);

Mythread mythread = new Mythread(socket,co);

co++;

mythread.start();

}

} catch (Exception ex) {

System.out.println("vv");

}

}

public static void main(String[] args) {

new Server();

}

class Mythread extends Thread {

Socket ssocket;

private int count;

private BufferedReader br;

private PrintWriter pw;

public String msg;

public Mythread(Socket s,int c) {

ssocket = s;

count=c;

}

public void run() {

try {

br = new BufferedReader(new InputStreamReader(ssocket.getInputStream()));

msg = "欢迎【" +"Client "+count + "】进入聊天室!当前聊天室有【" + clients.size() + "】人";

sendMsg();

while ((msg = br.readLine()) != null) {

msg = "【" +"Client "+count + "】说:" + msg;

sendMsg();

}

} catch (Exception ex) {

}

}

public void sendMsg() {

try {

System.out.println(msg);

for (int i = clients.size() - 1; i >= 0; i--) {

pw = new PrintWriter(clients.get(i).getOutputStream(), true);

pw.println(msg);

pw.flush();

}

} catch (Exception ex) {

}

}

}

}

运行结果:

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

java socket编程聊天室_Java Socket通信之聊天室功能相关推荐

  1. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

  2. 使用java网络编程模拟简单网络即时通信

    使用java网络编程模拟简单网络即时通信 通信流程图: 解析: 1.在上图中我们可以看出对于任何一个客户端,都由两部分构成,发送端和接收端(分别由两个线程来维系) 2.客户端在每一次请求链接时都会轮询 ...

  3. 【Java高级】初探socket编程 ——JavaSocket连接与简单通信

    新学期生活开始一段时间了,要继续学习一些新的技术(这里指socket /doge),目标是尝试完成一个在线即时聊天的小程序(尽量不咕).会更新一系列socket编程的技术文章,欢迎关注交流~ 那么千里 ...

  4. java socket 重连复用_Java Socket编程基础及深入讲解(示例代码)

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  5. java socket数据传输_Java Socket编程(一) Socket传输模式

    Java Socket编程(一) Socket传输模式 文章来源:ASPCN 作者:孙雯 Socket传输模式 Sockets有两种主要的操作方式:面向连接的和无连接的.面向连接的sockets操作就 ...

  6. linux java socket编程_深入学习socket网络编程,以java语言为例

    了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...

  7. Java网络编程(一)Socket套接字

    一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...

  8. 基于MFC的socket编程(异步非阻塞通信)

    对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其 ...

  9. 【java网络编程】用TCP socket实现多线程图片上传

    单线程上传 服务端: 客户端: 多线程上传 修改服务端: 修改客户端 单线程上传 服务端: public static void main(String[] args) {try ( // 创建一个S ...

最新文章

  1. R语言循环中break函数和next函数使用实战
  2. linux中iso文件怎么安装系统文件,我有linux的iso文件,要怎么安装系统
  3. 春运又在路上了,火车购票、出行指南了解一下!
  4. 将四个整数进行从小到大的顺序排列 java_07_Java基础语法_第7天(练习)_讲义(练习加强+在eclipse中实现)...
  5. 显微镜自动聚焦原理是什么_什么是共聚焦显微镜?你了解过共聚焦显微镜吗?...
  6. python 元组比较大小_为什么元组比列表更快?
  7. oracle存储过程更新权限不足,oracle创建存储过程时报权限不足
  8. (待补充)【读书笔记】20190816《码农翻身》——刘欣
  9. java中awt和swing是什么关系
  10. 赏金猎人:德州堕胎法案 | 经济学人早报精选20210902
  11. 两步就能使用pyqt制作软件界面,写一个基于you-get的windows端app
  12. CSP-S 2020 儒略日
  13. 小米将在武汉建1万人研发中心
  14. 数仓建设保姆级教程,离线和实时理论+实战)
  15. CG cosh, exp, sinh, smoothstep, tanh, perlin_easeCurve1/2 曲线
  16. 算法设计与分析------蛮力法
  17. numpy(逻辑函数与数学函数)
  18. 大争之世智造为基,瑞科智能将亮相第21届SIMM深圳机械展
  19. Unity实现 场景切换 音乐不断
  20. 八道超经典指针面试题(三千字详解)

热门文章

  1. 由于这台计算机没有终端服务器客户端访问许可证,远程会话被中断解决办法...
  2. 使用Remoting技术
  3. php ajax mysql 分页查询_PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
  4. java 调用linux 脚本并获取返回值
  5. android studio 导入依赖报错——Could not find com.xxx,(# fields: 66338 > 65536)
  6. Android 活体人脸实时采集,百度、虹软
  7. vue时间过滤器filter
  8. 学校计算机二级模拟上机能看分数吗,全国计算机二级考试机试考完怎么储存的...
  9. 数据库的垂直切分和水平切分
  10. Linux文件权限一共10位长度,分成四段,每段的含义