黑马程序员_多线程socket聊天室
来源:互联网 发布:mac与虚拟机共享桌面 编辑:程序博客网 时间:2024/05/21 14:55
—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
首先来进行服务端的编写,服务端几个小步骤:
//1、创建socketServerSocket server = new ServerSocket();Socket socket = server.accept();//监听作用,该方法为阻塞式//2、创建流DataInputStream ds = new DataInputStream(socket.getInputStream());//3、进行数据的读写String message = ds.readUTF();System.out.println(message);
然后编写客户端,与服务器端大致相同,少了监听的方法。
//1、创建socketSocket s = new Socket("127.0.0.1",6665);.//2、创建流DataOutputStream dos = new DataOutputStream(s.getOutputStream());//3、进行数据的读写Scanner scanner = new Scanner(System.in);String string=scanner.next();dos.writeUTF(string);dos.flush();//4、用完了关闭dos.close();s.close();
以上就是大体的流程,然而我们需要多个人同时进入聊天室,则需要改成多线程的,代码如下
服务端:
import java.io.*;import java.net.*;public class Chat {public static void main(String[] args) {ServerSocket server = null;try {server = new ServerSocket(6665);} catch (IOException e) {System.out.println("端口被占用,创建端口失败。");}Socket socket = null;while (true){try {socket = server.accept();} catch (IOException e) {System.out.println("客户端连接失败。");}new Thread(new Rev(socket)).start();}}}class Rev implements Runnable{Socket socket = null;Rev(Socket socket){this.socket = socket;}public void run(){String ip=socket.getInetAddress().toString();try {while(true){DataInputStream ds = new DataInputStream(socket.getInputStream());String message = ds.readUTF();System.out.println(ip+": "+message);}} catch (IOException e) {System.out.println("客户端"+ip+"已退出!");}}}
客户端:
import java.net.*;import java.io.*;import java.util.*;class Client{public static void main(String args[]) throws Exception{Socket s = new Socket("127.0.0.1",6665);OutputStream os = s.getOutputStream();DataOutputStream dos = new DataOutputStream(os);while(true){Scanner scanner = new Scanner(System.in);String string=scanner.next();if (string.equals("exit")){System.out.println("退出了~");s.shutdownInput();dos.close();s.close();System.exit(0);}dos.writeUTF(string);dos.flush();}}}
—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
0 0
- 黑马程序员_多线程socket聊天室
- 黑马程序员-多线程聊天室
- 黑马程序员—多线程聊天室(Socket介绍+源码)
- 黑马程序员_.Net多线程Socket编程(对话聊天)
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- 黑马程序员_多线程
- jgGrid相关操作--jQuery学习笔记
- 解决npm 的 shasum check failed for错误(npm注册国内镜像介绍)
- JBPM4.4(三)——与SSH的集成运用
- 通用角色和反射机制开发实例控件及实现功能介绍
- win7 ASP.NET 安全选项卡无法打开(无法连接到 SQL Server 数据库)的解决办法
- 黑马程序员_多线程socket聊天室
- The Heartbleed Bug
- [Phonegap+Sencha Touch] 移动开发14 创建wp8项目失败的解决办法
- SqlServer命名规范
- oracle 复制数据 insert into、as select
- UVa 120 - Stacks of Flapjacks
- c++中向量
- ubuntu安装后没grub启动管理器
- 由int与unsigned int 相加看c++类型转换