`

java Socket(二)

 
阅读更多

上次做了一个java socket一对一通信的例子这次来写一个一对多的通信,这里我们使用java的多线程来实现

首先来看一下服务类

 

[java] view plaincopy
  1. /** 
  2.  *  
  3.  */  
  4. package com.dnion.socket;  
  5.   
  6. import java.io.IOException;  
  7. import java.net.ServerSocket;  
  8. import java.net.Socket;  
  9.   
  10. /** 
  11.  ***************************************************************  
  12.  * 项目名称:JavaThread 
  13.  * 程序名称:MultiJabberServer 
  14.  * 日期:2012-8-23 下午02:38:20 
  15.  * 作者: 
  16.  * 模块: 
  17.  * 描述: 
  18.  * 备注: 
  19.  * ------------------------------------------------------------ 
  20.  * 修改历史 
  21.  * 序号               日期              修改人       修改原因 
  22.  *  
  23.  * 修改备注: 
  24.  * @version  
  25.  *************************************************************** 
  26.  */  
  27. public class MultiJabberServer {  
  28.   
  29.       
  30.     /** 
  31.      * 方法名:main 
  32.      * 描述: 
  33.      * 作者: 
  34.      * 日期:2012-8-23 下午02:38:20 
  35.      * @param @param args 
  36.      * @return void 
  37.      */  
  38.     public static void main(String[] args) {  
  39.         ServerSocket s = null;  
  40.         Socket socket  = null;  
  41.         try {  
  42.             s = new ServerSocket(8080);  
  43.             //等待新请求、否则一直阻塞  
  44.             while(true){  
  45.                 socket = s.accept();  
  46.                 System.out.println("socket:"+socket);  
  47.                 new ServeOneJabbr(socket);  
  48.                   
  49.             }  
  50.         } catch (Exception e) {  
  51.             try {  
  52.                 socket.close();  
  53.             } catch (IOException e1) {  
  54.                 // TODO Auto-generated catch block  
  55.                 e1.printStackTrace();  
  56.             }  
  57.         }finally{  
  58.             try {  
  59.                 s.close();  
  60.             } catch (IOException e) {  
  61.                 // TODO Auto-generated catch block  
  62.                 e.printStackTrace();  
  63.             }  
  64.         }  
  65.           
  66.   
  67.     }  
  68.   
  69. }  

 

接着我们要写一个服务端响应请求的类也就是一个socket

 

[java] view plaincopy
  1. /** 
  2.  *  
  3.  */  
  4. package com.dnion.socket;  
  5.   
  6. import java.io.BufferedReader;  
  7. import java.io.BufferedWriter;  
  8. import java.io.IOException;  
  9. import java.io.InputStreamReader;  
  10. import java.io.OutputStreamWriter;  
  11. import java.io.PrintWriter;  
  12. import java.net.Socket;  
  13.   
  14. /** 
  15.  ***************************************************************  
  16.  * 项目名称:JavaThread 
  17.  * 程序名称:ServeOneJabbr 
  18.  * 日期:2012-8-23 下午02:34:13 
  19.  * 作者: 
  20.  * 模块: 
  21.  * 描述: 
  22.  * 备注: 
  23.  * ------------------------------------------------------------ 
  24.  * 修改历史 
  25.  * 序号               日期              修改人       修改原因 
  26.  *  
  27.  * 修改备注: 
  28.  * @version  
  29.  *************************************************************** 
  30.  */  
  31. public class ServeOneJabbr extends Thread{  
  32.   
  33.     private Socket socket = null;  
  34.     private BufferedReader br = null;  
  35.     private PrintWriter pw = null;  
  36.       
  37.     public ServeOneJabbr(Socket s){  
  38.         socket = s;  
  39.         try {  
  40.             br = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  41.             pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);  
  42.             start();  
  43.         } catch (Exception e) {  
  44.               
  45.             e.printStackTrace();  
  46.         }  
  47.     }  
  48.       
  49.     @Override  
  50.     public void run() {  
  51.         while(true){  
  52.             String str;  
  53.             try {  
  54.                 str = br.readLine();  
  55.                 if(str.equals("END")){  
  56.                     br.close();  
  57.                     pw.close();  
  58.                     socket.close();  
  59.                     break;  
  60.                 }  
  61.                 System.out.println("Client Socket Message:"+str);  
  62.                 pw.println("Message Received");  
  63.                 pw.flush();  
  64.             } catch (Exception e) {  
  65.                 try {  
  66.                     br.close();  
  67.                     pw.close();  
  68.                     socket.close();  
  69.                 } catch (IOException e1) {  
  70.                     // TODO Auto-generated catch block  
  71.                     e1.printStackTrace();  
  72.                 }  
  73.             }  
  74.         }  
  75.     }  
  76.       
  77.       
  78.       
  79. }  


接下来利用我们上一次的客户端socket

 

 

这样一个简单地多客户端响应socket就成了

 

每次有一个请求发送过来服务端都会新建一个线程来单独服务。

分享到:
评论

相关推荐

    java socket 二

    在标题"java socket 二"中,我们可能是在讨论进阶的Socket编程技术,比如多线程处理客户端连接,或者更复杂的网络协议实现。通常,一旦服务器接受一个连接,就会为每个客户端创建一个新的线程来处理通信,以避免阻塞...

    JAVA Socket 经典教程

    - **字节流与字符流**:Java提供了处理二进制数据的InputStream/OutputStream和处理文本数据的Reader/Writer。根据数据类型选择合适的流进行操作。 4. **异常处理** - **网络异常**:网络通信中可能出现...

    java socket 视频流转发socket

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、基于TCP/IP协议的网络通信能力。在"Java Socket 视频流转发Socket"这个主题中,我们将深入探讨如何使用Java Socket来处理视频流...

    JAVA Socket编程实现文件上传

    Java Socket编程是网络编程的基础,它提供了在两个应用程序之间建立通信连接的能力。在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库...

    Java Socket 聊天通信演示代码

    Java Socket 是一种网络通信协议,它是Java编程语言中实现客户端-服务器模型的基础。Socket 提供了低级别的、面向连接的、双向通信的网络接口,允许应用程序通过网络进行数据传输。在本示例中,我们将深入探讨Java ...

    java socket使用加密协议传输对象

    ### Java Socket 使用加密协议传输对象:深入解析与实践 在当今互联网时代,数据安全成为企业和个人用户关注的焦点。在Java开发中,Socket编程是一种常见的网络通信方式,它允许不同计算机上的应用程序通过网络进行...

    java socket客户端断线重连

    java socket client 断线重连的简单实现 有什么意见可以提哦

    java socket连接池 实现

    Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...

    java socket 客户端代码

    在Java编程语言中,Socket是实现网络通信的基础组件,它为两台计算机之间的通信提供了低级别的接口。在本文中,我们将深入探讨Java Socket客户端代码及其在创建基于Socket的聊天室客户端中的应用。 首先,理解...

    java socket实现smtp发送邮件,支持SSL

    Java Socket 实现 SMTP 发送邮件是一项常见的编程任务,尤其在自动化通知、系统间通信或用户交互中非常有用。SMTP(Simple Mail Transfer Protocol)是互联网上用于传输电子邮件的标准协议,而Java Socket则是Java...

    java socket工具类示例

    Java Socket工具类是Java网络编程中的重要组成部分,它提供了客户端和服务器端进行双向通信的基础。在本示例中,我们将探讨如何使用Java Socket创建一个简单的控制台聊天系统,包括客户端(client)和服务器端...

    Java Socket网络编程.pdf

    Java Socket网络编程是Java平台中的核心特性,它为开发者提供了在TCP/IP协议下创建网络应用的能力。Socket编程主要用于实现客户端和服务器之间的通信,基于客户机/服务器模型。在这个模型中,服务器端通常处于被动...

    java socket 经典版本

    Java Socket编程是网络编程的基础,它是Java API提供的一种用于实现客户端-服务器通信的接口。在Java中,Socket类和ServerSocket类是进行网络通信的核心组件。这个经典版本可能包含了一系列关于如何有效使用Java ...

    java socket源码解析

    java socket源码解析 java socket源码解析 java socket源码解析 java socket源码解析

    通过java socket实现屏幕网络监控

    Java Socket技术是网络编程中的重要组成部分,主要用于实现两个应用程序之间的通信。在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在...

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    Java Socket编程是Java网络编程的基础,它提供了网络通信的能力,使得程序可以与其他计算机上的服务进行交互。在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并...

    java socket 中文教程

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、基于TCP/IP协议的网络通信服务。本教程将深入探讨Java Socket的相关知识点,旨在帮助开发者理解和掌握如何在Java环境中构建网络...

    java socket 用户真实IP测试

    在Java网络编程中,Socket是实现客户端与服务器端通信的基础组件。当涉及到通过代理服务器或者负载均衡器(如Nginx)进行TCP转发时,获取用户的真实IP地址可能会变得复杂。在标题“java socket nginx tcp转发 用户...

    Java socket编程实现两台主机间的通信

    二、Java Socket 编程的实现方法 Java Socket 编程的实现方法可以分为四步: 1. 打开一个 Socket 连接:在客户端,使用 Socket 类来建立连接,并指定主机名和端口号。在服务器端,使用 ServerSocket 类来监听...

Global site tag (gtag.js) - Google Analytics