java socket 多客户端和服务器的通信
来源:互联网 发布:京东商城地区json数据 编辑:程序博客网 时间:2024/06/08 06:44
所谓可以多客户端,就是需要在服务器端进行多线程编程,每一个客户端对应一个线程。如果要实现时时通讯和话,无论是客户端还是服务器端都要至少两个线程,主线程进行发送信息,子线程进行获取信息,这样可以保证时时通信.
服务器端:
辅助线程:
现在就可以实现多客户端和服务器端通信了 ,不过客户端和客户端的通信暂时还没有搞懂,还要继续去学习。
下面贴出我的代码:
客户端:
package com.lip;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class Client{/** * Author: Lip * 客户端 */public static void main(String[] args){Socket socket = null;BufferedReader br = null;PrintWriter pw = null;Scanner scanner = new Scanner(System.in);// 从键盘读取try{// 创建客户端socketsocket = new Socket(Server.HOST, Server.PORT);// 读取从客户端发来的消息br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 写入信息到服务器端pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));new ReadServerMessage(br);// 从服务器读取消息while (true){String temp = scanner.nextLine();// 从键盘读取一行pw.println(temp);// 写到服务器pw.flush();if (temp.equals("q"))break;}}catch (Exception e){e.printStackTrace();}finally{try{System.out.println("close......");br.close();pw.close();socket.close();}catch (IOException e){e.printStackTrace();}}}}class ReadServerMessage extends Thread//从服务器读取消息{BufferedReader bReader; Socket socket;public ReadServerMessage(BufferedReader br){this.bReader = br;start();}public void run(){String str = "";while (true)//一直等待着服务器的消息{try{str = bReader.readLine();if (str.equals("q")){ bReader.close(); socket.close(); break;}}catch (IOException e){e.printStackTrace();}System.out.println("Server Message:" + str);}}}
服务器端:
package com.lip;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server{/** * Author:Lip Desc:SSD8_exercise1 */public static int PORT = 8000;public static String HOST = "127.0.0.1";public static void main(String[] args){ServerSocket serverSocket = null;Socket socket = null;try{serverSocket = new ServerSocket(PORT);// 等待请求,无请求一直等待while (true){System.out.println("Waiting Client");socket = serverSocket.accept();// 接受请求System.out.println("Client Conect!");new ThreadedServer(socket);}}catch (Exception e){try{socket.close();}catch (IOException e1){e1.printStackTrace();}}finally{ try{serverSocket.close();}catch (IOException e){e.printStackTrace();}}}}
辅助线程:
package com.lip;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class ThreadedServer extends Thread{private Socket socket = null;private BufferedReader br = null;private PrintWriter pw = null;private Scanner scanner = null;public ThreadedServer(Socket s){socket = s;try{br = new BufferedReader(new InputStreamReader(socket.getInputStream()));pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);scanner = new Scanner(System.in);// 从键盘读取数据start();}catch (Exception e){e.printStackTrace();}}public void run(){new ReadClientMessage(br, socket);//读取客户端数据while (true)//向客户端发送数据{try{pw.println(scanner.nextLine());pw.flush();}catch (Exception e){try{br.close();pw.close();socket.close();}catch (IOException e1){e1.printStackTrace();}}}}}class ReadClientMessage extends Thread{BufferedReader bReader; Socket socket;public ReadClientMessage(BufferedReader br,Socket s){this.bReader = br;this.socket=s;start();}public void run(){String str = "";while (true){try{str = bReader.readLine();if (str.equals("q")){ bReader.close(); socket.close(); break;}}catch (IOException e){e.printStackTrace();}System.out.println("Client Message:" + str);}}}
现在就可以实现多客户端和服务器端通信了 ,不过客户端和客户端的通信暂时还没有搞懂,还要继续去学习。
- java socket 多客户端和服务器的通信
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 一个 Java 的 Socket 服务器和客户端通信的例子
- Java 的 Socket 服务器和客户端通信的例子
- java 通过 socket 实现 服务器和客户端的通信 TCP
- JAVA中Socket服务器/客户端的通信
- C++ Socket多客户端和服务器通信
- SOCKET 服务器和客户端通信
- Java 的 Socket 服务器和客户端通信的例子 存在一个小问题
- Java Socket进行客户端和服务器进行通信的简单例子
- 开了FTE功能,可在浏览网页时FTE的4个快捷图标无响应
- HTTP深入浅出 http请求
- Struts2整合JFreeChart
- delphi 使用ECC200绘制二维码
- 恢复出厂设置时如何恢复WAP相关数据
- java socket 多客户端和服务器的通信
- 在QML中鼠标单击特殊效果实现示例
- android环境搭建
- C++标准库pair
- PhoneGap应用开发对策:如何通过苹果审核?
- 关于验证时间串的正则表达式
- 【C/C++】类成员函数地址的获取及使用方法
- 爱喝酒的程序员如何学习数据结构
- 高峰“论坛”归来感受