需求:

  1. 模拟qq聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示。
  2. 提示:

    客户端

    1) 客户端编写聊天的方法chat()

    2) 要求使用BufferedReader与BufferedWriter缓冲类

    3) 编写用于测试的主方法调用chat()方法

    服务器端

    1) 编写提供服务的方法service()

    2) 编写用于测试的主方法调用service()方法

  1. package Test1;
  2.  
  3. import java.io.*;
  4. import java.net.Socket;
  5.  
  6. public class ChatClient {
  7. public void chat(){
  8. try {
  9. Socket s = new Socket("localhost", 10086);
  10.  
  11. while (true){
  12. //获取输出流
  13. OutputStream outputStream = s.getOutputStream();
  14.  
  15. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  16. String line = br.readLine();
  17.  
  18. outputStream.write(line.getBytes());
  19.  
  20. //获取服务器的反馈
  21. InputStream inputStream = s.getInputStream();
  22. byte[] bytes = new byte[1024];
  23. int length = inputStream.read(bytes);
  24. String string = new String(bytes, 0, length);
  25. System.out.println("服务器反馈:"+string);
  26.  
  27. }
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32.  
  33. public static void main(String[] args)throws IOException {
  34. new ChatClient().chat();
  35. }
  36. }
  1. package Test1;
  2.  
  3. import java.io.*;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. import java.util.Date;
  7.  
  8. public class ChatServer {
  9. public void service(){
  10. try {
  11. ServerSocket ss = new ServerSocket(10086);
  12.  
  13. Socket s = ss.accept();
  14.  
  15. while (true){
  16. String ip = s.getInetAddress().getHostAddress();
  17. Date date = new Date();
  18.  
  19. InputStream inputStream = s.getInputStream();
  20. byte[] bytes = new byte[1024];
  21. int length = inputStream.read(bytes);
  22. String s1 = new String(bytes, 0, length);
  23. System.out.println(ip+" "+date);
  24. System.out.println(s1);
  25.  
  26. //给出反馈
  27. OutputStream outputStream = s.getOutputStream();
  28. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  29. String line =br.readLine();
  30.  
  31. outputStream.write(line.getBytes());
  32. }
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37.  
  38. public static void main(String[] args) throws IOException{
  39. new ChatServer().service();
  40. }
  41. }

TCP模拟QQ聊天功能的更多相关文章

  1. python模拟QQ聊天室(tcp加多线程)

    python模拟QQ聊天室(tcp加多线程) 服务器代码: from socket import * from threading import * s = socket(AF_INET,SOCK_S ...

  2. 模拟QQ聊天与视频聊天同时进行-------java基础知识总结

    前言:多线程的知识 代码: package com.day13.math; /** * 类说明 :模拟QQ聊天与视频聊天同时进行 * @author 作者 : chenyanlong * @versi ...

  3. 5 多线程 模拟qq聊天

    1.多线程思路 使用多线程完成一个全双工的QQ聊天程序 2.版本1:程序小框架 #1.收数据,然后打印 def recvData(): pass #2.检测键盘,发数据 def sendData(): ...

  4. socket 编程 TCP 实现简单聊天功能【转】

    转自:http://blog.csdn.net/liujia2100/article/details/9006479 版权声明:本文为博主原创文章,未经博主允许不得转载. 各个主要函数的功能: .so ...

  5. 调用QQ聊天功能

    [HTML]: <a href="javascript:void(0);" onclick="chatQQ()">咨询客服</a> fu ...

  6. 11 TCP实现QQ聊天

    1.客户端参考代码 #coding=utf-8 from socket import * # 创建socket tcpClientSocket = socket(AF_INET, SOCK_STREA ...

  7. 一键QQ聊天与一键加群QQ功能

    最新有项目要求,点击页面上的一个按钮,实现直接启动QQ聊天,添加QQ群的功能. 开始以为会很复杂,百度后发现QQ已经有考虑到这方面的需求,只需进入:QQ推广 -> 推广工具 就能看到如下界面

  8. MVC实现类似QQ的网页聊天功能-ajax(下)

    此篇文章主要是对MVC实现类似QQ的网页聊天功能(上)的部分代码的解释. 首先说一下显示框的滚动条置底的问题: 结构很简单一个大的div(高度一定.overflow:auto)包含着两个小的div第一 ...

  9. 模拟QQ系统设置面板实现功能

    业务需求: 基于网盘客户端的实现,原有网盘的设置面板无论从界面显示还是从业务需求都不能满足我们的正常需求.当前的要求是,模拟QQ系统设置的面板实现当前我们网盘中的基本配置功能.在完成这篇文章时已将基本 ...

随机推荐

  1. 【洛谷P1816 忠诚】线段树

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  2. airtest前期准备(pocoSDK+unity打apk包+安装pocoui库)

    只介绍unity的环境准备,cocos的可以参考官方文档    https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integrat ...

  3. Django的ORM如何执行group by 语句

    问题描述: 使用Django的ORM建立了如下Model: class Book(models.Model): name = models.CharField(max_length=300) page ...

  4. QT 如何在调试时能进入源码方式(MacOS)

    最近在学习QT, 遇到一些crash, 也没看过QT源码啊, 就想类似Java一样, 在出错时进入源码跟踪一下, 但是QT和Java太不一样了, 死活进不去. 研究了几天, 发现本来是很简单的事情, ...

  5. ERROR: database "db" is being accessed by other users

    执行DROP DATABASE testdb;的时候提示: ERROR: database "testdb" is being accessed by other users DE ...

  6. 4 剑指Offer53-在排序数组中查找数字

    统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2  示例 2: 输入: nums = [5,7,7,8,8,10 ...

  7. 编程熊讲解LeetCode算法《二叉树》

    大家好,我是编程熊. 往期我们一起学习了<线性表>相关知识. 本期我们一起学习二叉树,二叉树的问题,大多以递归为基础,根据题目的要求,在递归过程中记录关键信息,进而解决问题. 如果还未学习 ...

  8. 剖析虚幻渲染体系(10)- RHI

    目录 10.1 本篇概述 10.2 RHI基础 10.2.1 FRenderResource 10.2.2 FRHIResource 10.2.3 FRHICommand 10.2.4 FRHICom ...

  9. 安全工具推荐之HackTools插件

    朋友推荐 链接:https://github.com/LasCC/Hack-Tools 一款多合一Chromium类红队浏览器插件,火狐也有对应版本 功能包括: 动态反向Shell生成器(PHP.Ba ...

  10. VLAN-5 利用三层交换机实现vlan间的路由

    一.实验拓扑图 二.实验编址 三.实验步骤 1.给对应的PC设置对应的IP和掩码还有接口,以及根据需要划分不同的vlan区域,再用文本标记出不同部门. 2.启动设备(全选) 3.首先用ping命令检查 ...