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系统设置的面板实现当前我们网盘中的基本配置功能.在完成这篇文章时已将基本 ...
随机推荐
- springMVC-9-异常处理器和拦截器
异常解析器: 用于统一处理 servlet 中的异常; 拦截器: 用于统一处理业务中需要统一处理的页面(比如登录判断等), 可抽取出来统一处理. 我们一般需要在每个页面都通过在session中寻找有无 ...
- 微信小程序云开发-添加数据
一.数据的添加 使用add方法添加数据 添加完成后,在数据库中查询,可以看到数据库中添加了1条数据,此时添加的数据系统自动添加了_openid 将[添加]功能写到对应的方法中 wxml页面中,点击[添 ...
- 小程序框架WePY 从入门到放弃踩坑合集
小程序框架WePY 从入门到放弃踩坑合集 一点点介绍WePY 因为小程序的语法设计略迷, 所以x1 模块化起来并不方便, 所以x2 各厂就出了不少的框架用以方便小程序的开发, 腾讯看到别人家都出了框架 ...
- VSCode 使用
运行时,如何弹出cmd命令窗口:将launch.json文件中的 externalConsole设置为true,并按F5运行(不要按右上角的运行按钮) 如何cin:先再命令窗口通过g++ *.cpp生 ...
- 【Java基础上】一、简述Java
一.简述Java Java是一种高级的面向对象的程序语言,在此处,不需要了解什么叫做面向对象,因为后面的文章中自然会谈到这方面的论述.那么,Java就是一个计算机的编程语言. 1.1 Java的历 ...
- Python基础之用tkinter写界面
参考链接:https://blog.csdn.net/qq_37482202/article/details/84201259 Tkinter介绍 Tkinter(也叫Tk接口)是Tk图形用户界面工具 ...
- RegisterClass/RegisterClassEx -- 注册窗口类
(1)函数原型 1 //RegisterClass 2 ATOM RegisterClass( 3 const WNDCLASS * lpWndClass //Long pointer to a WN ...
- 如何使用Git Flow 进行hotfix
前提是已经安装好git flow并做好配置.安装指导 1 首先确定你的紧急发布应基于那个分支(默认是mater/main分支,)并切换到对应分支. 2 git flow init--该命令会只指导你基 ...
- vue.js 贡献指南(翻译)
Vue.js Contributing Guide vue 2.x 嗨! 我很高兴你有兴趣为Vue.js做贡献. 在提交您的贡献之前,请务必花点时间阅读以下指南. 行为守则 问题报告指南 PR指南 开 ...
- transform——转换
① 位移 transform:translate(x,y); 同时x轴和y轴的位移 translate(x); 在x轴上的位移 同 translateX(x) translate ...