用socket底层原理实现简单聊天室程序,本篇为客户端

https://gitee.com/muyiafa/socketchatroom

socketChatRoom_Server(聊天室服务端)_木易阿发的博客-CSDN博客

文章目录

* 1、创建创建socket连接:构造方法里通过new socket指定ip和端口 实现连接
* 2、向服务器发送消息
* 3、接受其他客户端(主机广播)发送过来的信息
* 4、端口:8888

package homeWork.ChatRoom;import java.io.*;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
/*** author:木易阿发* time:220707* moditime:220710* 1、创建创建socket连接:构造方法里通过new socket指定ip和端口 实现连接  √* 2、向服务器发送消息* 3、接受其他客户端(主机广播)发送过来的信息*/
public class Clients {private Socket socket;//内部类可用public static void main(String[] args) {Clients clients = new Clients();clients.start();}//构造完成器启动时连接public Clients() {try {System.out.print("启动客户端...(");this.socket = new Socket("localhost",8888);System.out.println("连接成功!)");} catch (IOException e) {e.printStackTrace();}}public void start(){//向服务器发送消息try {//启动一个线程来接收服务器广播过来的其他客户端消息并打印在控制台Runnable serverHandler= new ServerHandler();Thread thread = new Thread(serverHandler);thread.setDaemon(true);//设置为守护线程thread.start();OutputStream os = socket.getOutputStream();//通过socket获取字节输出流OutputStreamWriter osw = new OutputStreamWriter(os, StandardCharsets.UTF_8);//字节转换流,将字符转换诶字节写出指定编码BufferedWriter bw = new BufferedWriter(osw);//缓冲输出流,保证语句的完整性PrintWriter pw = new PrintWriter(bw,true);//字符输出流(特别注意开启行刷新),按行写出控制台输入的消息String lines;Scanner ins = new Scanner(System.in);System.out.println("欢迎来到发哥聊天室,累了输入\"exit\"结束聊天!");while (true) {
//                System.out.print("输入发送:");lines = ins.nextLine();if ("exit".equals(lines)) {System.out.println("拜拜咯,下次再见!");break;} else if ("".equals(lines)) {System.out.print("\" \"-->空消息发送失败!!!\n");continue;}pw.println(lines);//写出消息数据}} catch (IOException e) {e.printStackTrace();}finally {try {socket.close();//关闭服务器连接同时也关闭流连接} catch (IOException e) {e.printStackTrace();}}}//读取服务器广播送过来的消息并过滤本机发送的消息,打印在控制台private class ServerHandler implements Runnable{@Overridepublic void run() {//交互任务try {InputStream is = socket.getInputStream();//通过socket获取输入流,得到服务端发广播的消息InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);//字符转换流,将is的字节流转换为字符BufferedReader br = new BufferedReader(isr);//缓冲字节输入流,块读取String line;while((line = br.readLine())!=null) {System.out.println(line);}} catch (IOException e) {
//                e.printStackTrace();}}}
}

/**------------------反爬声明o(▽)咻咻咻-------------------

** 作者:木易阿发 版权声明:**

本文为博主倾情原创文章,转载请附上源文链接!

如觉得本文对你有所收获,你的请评论点赞与

转发也将是鼓励支持我继续创作的动力。

更多精彩在视频号和公众号或 百度 *木易阿发* !

Gitee:木易阿发 (muyiafa) - Gitee.com ,

个人网站:http://www.muyiafa.com ,

乐学至善 开源共享 知行合一。

-------------------咻咻咻o(▽)反爬声明--------------------*/

socketChatRoom_Client(聊天室客户端)相关推荐

  1. Linux网络编程--聊天室客户端程序

    聊天室客户端程序 #define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/socket.h> #include & ...

  2. 简单聊天室客户端界面的实现(ChatClient.java)

    1.界面要求如下: 2.选择左侧列表的好友,编辑信息后点击发送将信息传到聊天记录上,如下: 3.上代码: import java.awt.BorderLayout; import java.awt.e ...

  3. 基于Python语言、RSA非对称加密的IRC聊天室客户端

    源码地址: (55条消息) 基于Python语言.RSA非对称加密的IRC聊天室客户端源码与应用程序-Python文档类资源-CSDN文库 1 研究背景和现状 IRC是Internet Relay C ...

  4. 聊天室客户端和网页版的区别

    聊天室分为客户端和网页版主要是根据其打开方式做分类,目前市面上比较流行的视频聊天室分为客户端和网页版两种,客户端和网页版的区别在哪里呢,这两种分类其实是根据打开方式做区分的,网页版呢可直接在浏览器上输 ...

  5. Android多人聊天室—客户端

    客户端GitHub地址 服务器GitHub地址 Android多人聊天室-服务器 先上图 主活动接收用户信息并登录 package com.example.client;import android. ...

  6. qt linux 聊天室,Qt网络聊天室客户端

    原创 DeRoy 2020-08-15 收录于话题 #QT项目实战 11个 点击蓝字关注我们 基于Qt网络编程客户端 QTcpSocketQTcpSocket 类提供一个TCP套接字TCP是一个面向连 ...

  7. JAVA SE 实战篇 C7 基于CSFramework的聊天室 (下) 客户端APP

    文章目录 P1 聊天室用户端APP功能分析 P2 进入聊天室前的准备 1 连接 ChatRoomConnectToServer 2 登录 ChatRoomLoginView 3 用户信息 UserIn ...

  8. Android聊天室(客户端)

    Android聊天室(客户端) 作者:黑衣侠客 一.前言: 这是我目前写的第二个Android App,但是目前因为知识有限,所以对一些代码不能解释到位,其中有些代码形式参考了网上的一些部分,后期慢慢 ...

  9. 基于Python Tkiner、thread与socket实现的简单多人聊天室,在Python中创建TCP服务器与客户端进行通信

    基于Python Tkiner.thread与socket实现的简单多人聊天室,在Python中创建TCP服务器与客户端进行通信 完整代码下载地址:基于Python Tkiner.thread与soc ...

  10. 聊天室服务端和客户端的实现

    在Linux环境下,实现客户端和服务端之间的信息发送和接收,实现聊天室,可进行文件传送功能. 客户端: #include <sys/types.h> #include <sys/so ...

最新文章

  1. 第五周项目一-三角形类雏形(4)
  2. 期待微软平台即服务技术Service Fabric 开源
  3. Springboot2.x +JPA 集成 Apache ShardingSphere 分表+读写分离
  4. oracle 如何终止存储过程的运行
  5. python编程教学软件-编程教学平台的python编辑器的开发
  6. 航班预订系统测试用例
  7. Git入门——tortoisegit使用问题:git不显示图标?
  8. AndroidQ SystemUI之power键灭屏锁屏流程
  9. 输入关键字生成对联_自动对联工具
  10. Elasticsearch:深入理解 Dissect ingest processor
  11. 数据分析与AI(七)傅里叶对登月图片降噪/scipy库对图片进行处理/
  12. L1-068 调和平均 (10分)
  13. 训练分类器OpenCV(3.4.1) Error: Assertion failed错误解决
  14. 修改STM32的USB程序
  15. 摩杜云受邀出席CDEC中国数据智能生态大会
  16. 如何自己创业开公司 创业流程
  17. 中国2019最有价值的科幻类影视游戏IP 网络科幻小说《公元2119年》、
  18. 一二线城市知名IT互联网公司名单
  19. 读书笔记(I) 游戏之旅
  20. 35、自动喷水灭火系统的防护冷却系统

热门文章

  1. 数据安全法在企业如何落地?
  2. 惠普HP Designjet T930 打印机驱动
  3. 我喜欢这篇杂谈:鸡汤本无毒,只是架不住有人没喝就倒了
  4. WebRTC学习(九)RTP 媒体控制与数据统计
  5. My God!--如此登陆校验码
  6. Jquery.velocity动画
  7. 十三、Python第十三课——类(包含对类的相关概念的理解,这一文的附录让你彻底明白类和对象)
  8. 透过海信、海尔年中财报:看家电行业“下半场”之变
  9. linux系统无法识别固态硬盘_我想装Linux操作系统,但是为什么总无法识别硬盘啊?...
  10. LLMs之BELLE:源码解读(sft_train.py文件)源码解读(sft_train.py文件)采用LoRA微调模型—解析命令行参数→参数与日志初始化→初始化模型和标记器→模型优化(LoRA/梯