客户端

  1. package cn.qianfeng.kaoti03;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintStream;
  7. import java.net.Socket;
  8.  
  9. class ReceiveSocket implements Runnable {
  10. private Socket s;
  11.  
  12. public ReceiveSocket(Socket s) {
  13. super();
  14. this.s = s;
  15. }
  16.  
  17. @Override
  18. public void run() {
  19. // TODO Auto-generated method stub
  20. BufferedReader br = null;
  21. try {
  22. while (true) {
  23.  
  24. br = new BufferedReader(new InputStreamReader(
  25. s.getInputStream()));
  26. String line = br.readLine();
  27. if (line != null) {
  28. System.out.println(line);
  29. }
  30.  
  31. }
  32. } catch (IOException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. } finally {
  36. if (br != null) {
  37. try {
  38. br.close();
  39. } catch (IOException e) {
  40. // TODO Auto-generated catch block
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  45.  
  46. }
  47. }
  48.  
  49. class SendSocket implements Runnable {
  50. private Socket s;
  51.  
  52. public SendSocket(Socket s) {
  53. super();
  54. this.s = s;
  55. }
  56.  
  57. @Override
  58. public void run() {
  59. // TODO Auto-generated method stub
  60. BufferedReader br = null;
  61. try {
  62. while (true) {
  63.  
  64. br = new BufferedReader(new InputStreamReader(System.in));
  65. PrintStream ps = new PrintStream(s.getOutputStream(), true);
  66. String line = br.readLine();
  67. ps.println("A:" + line);
  68. }
  69. } catch (IOException e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. } finally {
  73. if (br != null) {
  74. try {
  75. br.close();
  76. } catch (IOException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. }
  80. }
  81.  
  82. }
  83.  
  84. }
  85. }
  86.  
  87. public class TestSocket {
  88. public static void main(String[] args) {
  89. try {
  90. Socket s = new Socket("localhost", 8888);
  91. new Thread(new SendSocket(s)).start();
  92. new Thread(new ReceiveSocket(s)).start();
  93.  
  94. } catch (IOException e) {
  95. // TODO Auto-generated catch block
  96. e.printStackTrace();
  97. }
  98. }
  99. }

服务端

  1. package cn.qianfeng.kaoti03;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9.  
  10. class SendServerSocket implements Runnable {
  11. private Socket s;
  12.  
  13. public SendServerSocket(Socket s) {
  14. super();
  15. this.s = s;
  16. }
  17.  
  18. @Override
  19. public void run() {
  20. // TODO Auto-generated method stub
  21. BufferedReader br = null;
  22. PrintWriter ps = null;
  23. try {
  24. while (true) {
  25.  
  26. br = new BufferedReader(new InputStreamReader(System.in));
  27. ps = new PrintWriter(s.getOutputStream(), true);
  28. String line = br.readLine();
  29. if (line != null) {
  30. ps.println("B:" + line);
  31. }
  32.  
  33. }
  34. } catch (IOException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. } finally {
  38. if (br != null) {
  39. try {
  40. br.close();
  41. } catch (IOException e) {
  42. // TODO Auto-generated catch block
  43. e.printStackTrace();
  44. }
  45. }
  46.  
  47. }
  48.  
  49. }
  50. }
  51.  
  52. class ReceiveServerSocket implements Runnable {
  53. private Socket s;
  54.  
  55. public ReceiveServerSocket(Socket s) {
  56. super();
  57. this.s = s;
  58. }
  59.  
  60. @Override
  61. public void run() {
  62. // TODO Auto-generated method stub
  63. BufferedReader br = null;
  64. try {
  65. while (true) {
  66.  
  67. br = new BufferedReader(new InputStreamReader(
  68. s.getInputStream()));
  69.  
  70. String line = br.readLine();
  71. if (line != null) {
  72. System.out.println(line);
  73.  
  74. }
  75. }
  76. } catch (IOException e) {
  77. // TODO Auto-generated catch block
  78. e.printStackTrace();
  79. } finally {
  80. if (br != null) {
  81. try {
  82. br.close();
  83. } catch (IOException e) {
  84. // TODO Auto-generated catch block
  85. e.printStackTrace();
  86. }
  87. }
  88.  
  89. }
  90.  
  91. }
  92.  
  93. }
  94.  
  95. public class TestServerSocket {
  96. public static void main(String[] args) {
  97. try {
  98. ServerSocket ss = new ServerSocket(8888);
  99. Socket s = ss.accept();
  100. System.out.println(s.getInetAddress().getHostName()
  101. + ".....connected");
  102.  
  103. new Thread(new SendServerSocket(s)).start();
  104. new Thread(new ReceiveServerSocket(s)).start();
  105.  
  106. } catch (IOException e) {
  107. // TODO Auto-generated catch block
  108. e.printStackTrace();
  109. }
  110. }
  111. }

java_一对一自由聊天的更多相关文章

  1. mvc中signalr实现一对一的聊天

    Asp.net MVC中实现即时通讯聊天的功能.前几天刚写了一片基础入门的教程,今天就来实现一下使用signaIr实现一对一的聊天的功能,对于这种场景也是即时通讯最基本功能.好吧废话不多说.先来看一下 ...

  2. 基于swoole的网页一对一实时聊天

    需求分析 网站上实现一对一即时沟通,能查看聊天记录以及离线留言,新消息提醒. 核心技术 html5的websocket,php的swoole扩展http://wiki.swoole.com/ 数据表 ...

  3. spring boot websocket stomp 实现广播通信和一对一通信聊天

    一.前言 玩.net的时候,在asp.net下有一个叫 SignalR 的框架,可以在ASP .NET的Web项目中实现实时通信.刚接触java寻找相关替代品,发现 java 体系中有一套基于stom ...

  4. 一对一Socket简单聊天的实现

    今天终于调试通了Socket一对一的聊天,每次发送连接请求后,将用户名发送到Socket中去,然后将用户名和新建的socket存到map中,然后根据用户名来确定接收方是谁,以实现一对一的聊天功能. 上 ...

  5. 史上最全面的SignalR系列教程-5、SignalR 实现一对一聊天

    1.概述 通过前面几篇文章 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 史上最全面的Signa ...

  6. Android 基于Socket的聊天应用(二)

    很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...

  7. Android 即时语音聊天工具 开发

    使用融云SDK 1. 功能需求分析 1.1 核心功能需求: * 即时通讯 * 文字聊天 * 语音聊天 1.2 辅助功能需求: * 注册.登录 * 好友添加功能 * 好友关系管理 2. 融云即时通讯平台 ...

  8. Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    这篇文章主要介绍了Java Socket聊天室编程(二)之利用socket实现单聊聊天室的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在上篇文章Java Socket聊天室编程(一)之 ...

  9. Redis实现聊天功能

    在学习了Redis做为消息队列之后研究 了redis聊天的功能. 其实用关系型数据库也可以实现消息功能,自己就曾经用mysql写过一个简单的消息的功能.RDB中思路如下: ** 在实际中可以完全借助m ...

随机推荐

  1. C#中的ODBC、OLEDB连接

      using System;using System.Collections.Generic;using System.Text;using System.Data.Odbc;using Syste ...

  2. eclipse代码格式化

    今天想要改变Eclipse的代码颜色和背景等等,如果一项一项来,太麻烦了,于是从网上找了个epf文件,但是一开始不知道怎么弄,因为自己是个新手, 对于编译环境不太熟悉,后来找到方法,就是打开Eclip ...

  3. 【转】Android学习系列(1)--为App签名(为apk签名)

    原文网址:http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html 写博客是一种快乐,前提是你有所写,与人分享,是另 ...

  4. JS中的substring和substr函数的区别

    1. 在JS中, 函数声明: stringObject.substring(start,stop) start是在原字符串检索的开始位置,stop是检索的终止位置,返回结果中不包括stop所指字符. ...

  5. Dim Loop 出现结果不同

    (1)结果是:循环1次 Dim counter,num counter = 0 'num = 9 Do Until num = 10     num = num - 1     counter = c ...

  6. vijosP1543 极值问题

    vijosP1543 极值问题 链接:https://vijos.org/p/1543 [题解](网上) 从简单情况人手:     设定m=1,将m代人方程②有(n2-n-1)2=1,可求出n=1: ...

  7. HW5.19

    public class MyTriangle { public static boolean isValid(double side1, double side2, double side3) { ...

  8. https://lua-toolbox.com/

    Lua Toolbox https://github.com/bungle/lua-resty-session

  9. css3水平翻转

    @keyframes cardFront { 0%, 40%, 100% { 02     opacity:1; 03     -webkit-transform:rotateY(0deg); 04 ...

  10. Xsocket学习

    1.xsocket是一个轻量级的基于NIO的服务器框架,用于开发高性能.可扩展.多线程的服务器.该框架封装了线程处理,异步读写等方面的操作. 定义一个借口,继承IDataHandler,IConnec ...