实现聊天室一对一
来源:互联网 发布:国际漫游数据流量套餐 编辑:程序博客网 时间:2024/06/05 07:39
第一步:建立一个服务器类
public class Server {
public static void main(String[] args) {
//启动服务器接收线程
ServerReceiver1 sr = new ServerReceiver1();
Thread t1 = new Thread(sr);
t1.start();
//启动服务器发送线程
ServerSend2 ss = new ServerSend2();
Thread t2 = new Thread(ss);
t2.start();
}
}
第二步:建立一个客户端的类
public class Client {
public static void main(String[] args) {
//启动客户端发送线程
ClientSend1 cs = new ClientSend1();
Thread t1 = new Thread(cs);
t1.start();
//启动客户端接收线程
ClientReceiver2 cr = new ClientReceiver2();
Thread t2 = new Thread(cr);
t2.start();
}
}
第三步:
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientSend1 implements Runnable{
public void run(){
send();
}
public void send() {
//一.建立socket连接
//2.客户端申请连接
//只是申请连接 还没真正接通 相当于打电话拨号 对方不一定接
Socket s = null;
try {
s = new Socket("localhost",8888);
} catch (UnknownHostException e) {
System.out.println("找不到主机,连接失败");
e.printStackTrace();
} catch (IOException e) {
System.out.println("建立socket连接失败");
e.printStackTrace();
}
//二.I/O操作
//1.建立通道
OutputStream os = null;
try {
os = s.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(os);
Scanner scanner = new Scanner(System.in);
System.out.println("---------client---------");
System.out.println("请输入您想说的话:");
String str = scanner.next();
//2.利用write写
pw.println(str);
pw.flush();
//---------------------一直说-----------------------
while(!str.equals("88")){
System.out.println("---------client---------");
System.out.println("请输入您想说的话:");
str = scanner.next();
//2.利用write写
pw.println(str);
pw.flush();
}
//3.关闭通道
//三.关闭socket连接
if(s!=null){
try {
s.close();
} catch (IOException e) {
System.out.println("关闭socket连接失败");
e.printStackTrace();
}
}
}
}
第四步:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientReceiver2 implements Runnable{
public void run() {
receive();
}
public void receive(){
//一.建立socket连接
//2.客户端申请连接
//只是申请连接 还没真正接通 相当于打电话拨号 对方不一定接
Socket s = null;
try {
s = new Socket("localhost",9999);
} catch (UnknownHostException e) {
System.out.println("找不到主机,连接socket失败");
e.printStackTrace();
} catch (IOException e) {
System.out.println("建立socket连接失败");
e.printStackTrace();
}
//二.I/O操作
//1.建立通道
try {
InputStream os = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(os));
//2.利用read读
String message = br.readLine();
System.out.println("---------client---------");
System.out.println("服务器对您说:" + message);
//---------------------一直说-----------------------
while(!message.equals("88")){
message = br.readLine();
System.out.println("---------client---------");
System.out.println("服务器对您说:" + message);
}
} catch (IOException e) {
System.out.println("客户端读取数据失败");
e.printStackTrace();
}
//3.关闭通道
//三.关闭socket连接
if(s!=null){
try {
s.close();
} catch (IOException e) {
System.out.println("关闭socket失败");
e.printStackTrace();
}
}
}
}
第五步:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerReceiver1 implements Runnable{
public void receive(){
//一.建立socket连接
//1.新建ServerSocket
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
} catch (IOException e) {
System.out.println("重复的端口,请先关闭相应程序,再从新启动");
e.printStackTrace();
}
Socket socket = null;
try {
socket = ss.accept();
} catch (IOException e) {
e.printStackTrace();
}//阻塞式的 傻傻的等待 等待客户端申请连接
System.out.println("有一个客户端连接");
//二.I/O操作
//1.建立通道
try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//2.利用read读
String message = br.readLine();
System.out.println("-------------Server---------");
System.out.println("客户端对你说:" + message);
while(!message.equals("88")){
//一直读
message = br.readLine();
System.out.println("-------------Server---------");
System.out.println("客户端对你说:" + message);
}
} catch (IOException e) {
System.out.println("服务器接收数据失败");
e.printStackTrace();
}
//3.关闭通道
}
public void run() {
receive();
}
}
第六步:
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerSend2 implements Runnable{
public void send(){
//一.建立socket连接
//1.新建ServerSocket
ServerSocket ss = null;
try {
ss = new ServerSocket(9999);
} catch (IOException e) {
System.out.println("重复的端口,请先关闭相应程序,再从新启动服务器");
e.printStackTrace();
}
Socket socket = null;
try {
socket = ss.accept();
} catch (IOException e) {
System.out.println("建立socket连接失败");
e.printStackTrace();
}//阻塞式的 傻傻的等待 等待客户端申请连接
System.out.println("有一个客户端连接");
//二.I/O操作
//1.建立通道
OutputStream os = null;
try {
os = socket.getOutputStream();
} catch (IOException e) {
System.out.println("服务器端建立输出流失败");
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(os);
//2.利用write写
System.out.println("-------------Server---------");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您想说的话:");
String str = scanner.next();
pw.println(str);
pw.flush();
while(!str.equals("88")){
//一直写
System.out.println("-------------Server---------");
System.out.println("请输入您想说的话:");
str = scanner.next();
pw.println(str);
pw.flush();
}
//3.关闭通道
}
public void run() {
send();
}
}
- 实现聊天室一对一
- Java websocket + redis 实现多人单聊天室,多人多聊天室, 一对一聊天
- 聊天室实现
- php+Ajax+Mysql 创建简单的一对一在线聊天室
- hibernate一对一实现
- Hibernate一对一实现
- socket实现一对一通讯
- socket实现一对一通讯
- 简单网络聊天室实现
- Ajax+servlet实现聊天室
- Socket实现手机聊天室
- Java 实现QQ聊天室
- UDP实现聊天室
- 聊天室功能实现
- js实现聊天室
- android实现简单聊天室
- nodejs+nowjs实现聊天室
- 简单聊天室的实现
- Java基础笔记整理---【06】面向对象程序设计-封装
- .reg文件添加、修改、删除注册表的方法
- 全排列函数
- PAT甲级1002. A+B for Polynomials
- Spring MVC的跳转方式
- 实现聊天室一对一
- linux下搭建oracle 12c sqlplus 客户端
- 初识 SpringMVC 中bean中 id 和name
- 小明的调查作业(南阳理工OJ48)
- [PAT乙级]1023. 组个最小数 (20)
- 单片机数组操作需谨慎-程序跑飞原因之一
- 51Nod
- 一致性Hash算法背景
- 20170728 JAVA利用循环和选择语句解决购物车问题