黑马程序员_多线程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
原创粉丝点击