需求:

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

    客户端

    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();
}
}

最新文章

  1. setTimeout和setInterval从入门到精通
  2. (转) 如何让 UITableView 的 headerView跟随 cell一起滚动
  3. Windows环境下Android Studio v1.0安装教程
  4. barabasilab-networkScience学习笔记4-无标度特征
  5. MSSQLSERVER之发布-分发-订阅
  6. 用CSS让未知高度内容垂直方向居中
  7. <bootstrap>bs2和3的区别</bootstrap>
  8. aspose.cell 自定义模板 SUM无效
  9. STL vector 用法介绍
  10. EOF 空格问题
  11. ReentrantLock可重入锁的使用场景(转)
  12. css中padding中样式的顺序含义
  13. 排序算法门外汉理解-Shell排序
  14. Qt5:不规则按钮的实现---通过贴图实现
  15. maven - 引用本地jar,进行jar包移动
  16. mysql 函数学习(常用)
  17. uva-108-贪心
  18. python no module named builtins
  19. Java框架之Struts2(一)
  20. Alpha冲刺! Day11 - 砍柴

热门文章

  1. 微信小程序云开发-云存储的应用-识别银行卡
  2. P2015
  3. POJ1704 Georgia and Bob 题解
  4. 第八篇 -- 用U盘制作启动盘装Win10系统
  5. onclick="return doAlert()" onclick="return false"
  6. 快速设置 JAVA_HOME
  7. salesforce Integration 概览(一) 杂篇
  8. 漫谈CUDA优化
  9. 京东购物小程序 | Taro3 项目分包实践
  10. Mysql读写锁保姆级图文教程