TCP模拟QQ聊天功能
需求:
- 模拟qq聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示。
提示:
客户端
1) 客户端编写聊天的方法chat()
2) 要求使用BufferedReader与BufferedWriter缓冲类
3) 编写用于测试的主方法调用chat()方法
服务器端
1) 编写提供服务的方法service()
2) 编写用于测试的主方法调用service()方法
package Test1;
import java.io.*;
import java.net.Socket;
public class ChatClient {
public void chat(){
try {
Socket s = new Socket("localhost", 10086);
while (true){
//获取输出流
OutputStream outputStream = s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
outputStream.write(line.getBytes());
//获取服务器的反馈
InputStream inputStream = s.getInputStream();
byte[] bytes = new byte[1024];
int length = inputStream.read(bytes);
String string = new String(bytes, 0, length);
System.out.println("服务器反馈:"+string);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args)throws IOException {
new ChatClient().chat();
}
}
package Test1; import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date; public class ChatServer {
public void service(){
try {
ServerSocket ss = new ServerSocket(10086); Socket s = ss.accept(); while (true){
String ip = s.getInetAddress().getHostAddress();
Date date = new Date(); InputStream inputStream = s.getInputStream();
byte[] bytes = new byte[1024];
int length = inputStream.read(bytes);
String s1 = new String(bytes, 0, length);
System.out.println(ip+" "+date);
System.out.println(s1); //给出反馈
OutputStream outputStream = s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line =br.readLine(); outputStream.write(line.getBytes());
}
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) throws IOException{
new ChatServer().service();
}
}
TCP模拟QQ聊天功能的更多相关文章
- python模拟QQ聊天室(tcp加多线程)
python模拟QQ聊天室(tcp加多线程) 服务器代码: from socket import * from threading import * s = socket(AF_INET,SOCK_S ...
- 模拟QQ聊天与视频聊天同时进行-------java基础知识总结
前言:多线程的知识 代码: package com.day13.math; /** * 类说明 :模拟QQ聊天与视频聊天同时进行 * @author 作者 : chenyanlong * @versi ...
- 5 多线程 模拟qq聊天
1.多线程思路 使用多线程完成一个全双工的QQ聊天程序 2.版本1:程序小框架 #1.收数据,然后打印 def recvData(): pass #2.检测键盘,发数据 def sendData(): ...
- socket 编程 TCP 实现简单聊天功能【转】
转自:http://blog.csdn.net/liujia2100/article/details/9006479 版权声明:本文为博主原创文章,未经博主允许不得转载. 各个主要函数的功能: .so ...
- 调用QQ聊天功能
[HTML]: <a href="javascript:void(0);" onclick="chatQQ()">咨询客服</a> fu ...
- 11 TCP实现QQ聊天
1.客户端参考代码 #coding=utf-8 from socket import * # 创建socket tcpClientSocket = socket(AF_INET, SOCK_STREA ...
- 一键QQ聊天与一键加群QQ功能
最新有项目要求,点击页面上的一个按钮,实现直接启动QQ聊天,添加QQ群的功能. 开始以为会很复杂,百度后发现QQ已经有考虑到这方面的需求,只需进入:QQ推广 -> 推广工具 就能看到如下界面
- MVC实现类似QQ的网页聊天功能-ajax(下)
此篇文章主要是对MVC实现类似QQ的网页聊天功能(上)的部分代码的解释. 首先说一下显示框的滚动条置底的问题: 结构很简单一个大的div(高度一定.overflow:auto)包含着两个小的div第一 ...
- 模拟QQ系统设置面板实现功能
业务需求: 基于网盘客户端的实现,原有网盘的设置面板无论从界面显示还是从业务需求都不能满足我们的正常需求.当前的要求是,模拟QQ系统设置的面板实现当前我们网盘中的基本配置功能.在完成这篇文章时已将基本 ...
随机推荐
- bash shell 遍历一个数组
var[@] 数组的一个元素 var=("first" "second" "three") for str in ${var[@]}; d ...
- spring-4-申明事务
categories: spring5 事务回顾 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性. 事务就是把一 ...
- Python自动化测试面试题-经验篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Java规范的三种注释方式:
1.单行注释 // //单行注释 2.多行注释 /* */ /* 多行 注释 */ 3.文档注释[java特有的] /** */ ◆注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文 ...
- Skywalking-04:扩展Metric监控信息
扩展 Metric 监控信息 官方文档 Source and Scope extension for new metrics 案例:JVM Thread 增加 Metrics 修改 Thread 的定 ...
- 预训练语言模型的前世今生 - 从Word Embedding到BERT
预训练语言模型的前世今生 - 从Word Embedding到BERT 本篇文章共 24619 个词,一个字一个字手码的不容易,转载请标明出处:预训练语言模型的前世今生 - 从Word Embeddi ...
- Spring Cloud 专题之六:bus
书接上回: SpringCloud专题之一:Eureka Spring Cloud专题之二:OpenFeign Spring Cloud专题之三:Hystrix Spring Cloud 专题之四:Z ...
- Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在上一篇讲了远 ...
- DL基础补全计划(五)---数值稳定性及参数初始化(梯度消失、梯度爆炸)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 漏洞分析:CVE 2021-3156
漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 ...