客户端

package cn.qianfeng.kaoti03;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket; class ReceiveSocket implements Runnable {
private Socket s; public ReceiveSocket(Socket s) {
super();
this.s = s;
} @Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br = null;
try {
while (true) { br = new BufferedReader(new InputStreamReader(
s.getInputStream()));
String line = br.readLine();
if (line != null) {
System.out.println(line);
} }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
} class SendSocket implements Runnable {
private Socket s; public SendSocket(Socket s) {
super();
this.s = s;
} @Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br = null;
try {
while (true) { br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps = new PrintStream(s.getOutputStream(), true);
String line = br.readLine();
ps.println("A:" + line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } }
} public class TestSocket {
public static void main(String[] args) {
try {
Socket s = new Socket("localhost", 8888);
new Thread(new SendSocket(s)).start();
new Thread(new ReceiveSocket(s)).start(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

服务端

package cn.qianfeng.kaoti03;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; class SendServerSocket implements Runnable {
private Socket s; public SendServerSocket(Socket s) {
super();
this.s = s;
} @Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br = null;
PrintWriter ps = null;
try {
while (true) { br = new BufferedReader(new InputStreamReader(System.in));
ps = new PrintWriter(s.getOutputStream(), true);
String line = br.readLine();
if (line != null) {
ps.println("B:" + line);
} }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } }
} class ReceiveServerSocket implements Runnable {
private Socket s; public ReceiveServerSocket(Socket s) {
super();
this.s = s;
} @Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br = null;
try {
while (true) { br = new BufferedReader(new InputStreamReader(
s.getInputStream())); String line = br.readLine();
if (line != null) {
System.out.println(line); }
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } } } public class TestServerSocket {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostName()
+ ".....connected"); new Thread(new SendServerSocket(s)).start();
new Thread(new ReceiveServerSocket(s)).start(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

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. 【DataStructure In Python】Python模拟链表

    最近一直在学习Python和Perl这两门语言,两者共同点很多,也有不多.希望通过这样的模拟练习可以让自己更熟悉语言,虽然很多时候觉得这样用Python或者Perl并没有体现这两者的真正价值. #! ...

  2. 获取本机的ip

    https://4sysops.com/archives/ipv6-tutorial-part-6-site-local-addresses-and-link-local-addresses/ In ...

  3. Import data from SQLServer with Sqoop

    author: luciuz date: 2013/11/15 -------------------------------------------------------------------- ...

  4. bzoj1046

    首先这肯定是一道LIS的变形,这次求的是方案,还要求字典序最小 (注意这个字典序最小是指下标最小而不是数最小) 首先预处理以每个数为首,能组成多长的上升序列(这里我们用单调队列解决) 然后按照位置顺序 ...

  5. 【转】简单几步让App Store软件下载快如迅雷 -- 不错!!!

    原文网址:http://pad.zol.com.cn/237/2376160_all.html 下载速度慢的原因     1)国内用户从苹果软件商店下载软件速度很慢这是大家都知道的事实,究其原因就是苹 ...

  6. 不要浪费人生的每一天 ——Dropbox创始人在麻省理工的演讲 z

    Dropbox 创始人,CEO 德鲁·休斯顿(Drew Houston)近期在美国麻省理工学院的毕业典礼上发表演讲.他向大学生提出了 3 点人生建议:追逐自己感兴趣的事,找到最合适的圈子,以及不要浪费 ...

  7. BZOJ2818: Gcd 莫比乌斯反演

    分析:筛素数,然后枚举,莫比乌斯反演,然后关键就是分块加速(分块加速在上一篇文章) #include<cstdio> #include<cstring> #include< ...

  8. JSP-讲解(生成java类、静态导入与动态导入)

    一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或J ...

  9. [codevs1287]矩阵乘法

    题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容.当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的.小明希 ...

  10. HW2.6

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...