`
klts
  • 浏览: 39246 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

socket多线程服务端获取客户端的多个请求

 
阅读更多

获取客户端的数据格式:length:123\n{string}\n

public class ServerSocketThread extends Thread{
  public static Socket socket = null;
  public  void run() {
    InputStream in = socket.getInputStream();
    byte[] buff = new byte[1024];
    int readLength = -1;
    int length = 0;
    try {
      while (in.read(buff, ++readLength, 1) != -1) {
        if (socket.isClosed()) {
          break;
        }
        if (buff[readLength] == '\n' && length == 0) {
          if (readLength < 8) {
            readLength = -1;
            continue;
          }
          String readString = new String(buff, 0, readLength);//获取length:123
          length = Integer.parseInt(readString.split(":")[1]);
          buff = new byte[length];
          in.read(buff);
          /* 这里开始处理业务并回写 */

          /* 然后准备收下一个包 */
          readLength = -1;
          buff = new byte[1024];
		  length = 0;
        }

      }
      
    }
    catch (BizException ex) {
      //处理捕获异常
      this.interrupt();
    }
    catch (Exception e) {
      //抛出系统异常
      this.interrupt();
    }
    
  }
}

 

分享到:
评论

相关推荐

    基于C++实现(控制台)Socket 接口实现自定义协议通信【100010754】

    开发一个服务端,实现并发处理多个客户端的请求。 程序界面不做要求,使用命令行或最简单的窗体即可。 功能要求如下: 运输层协议采用 TCP 客户端采用交互菜单形式,用户可以选择以下功能: a) 连接:请求连接到...

    C#.NET案例开发集锦代码7-11章

    第七章 案例1通过委托实现异步调用 案例2使用定时器执行方法 ...个新线程 第八章 案例1如何应用HTTP协议下载文件 案例2如何利用流下载文件 案例3获取当前主机名和IP 案例4自制浏览器 案例...

    局域网监控系统的开发

    本文首先介绍了可以实现局域网监控基础Socket编程的基本概念及其调用的方法,多线程的相关概念及套接字的使用方法,接着从建立Socket套接字开始,完成各功能模块的系统实施,主要包括从鼠标锁定,到关机,到时时截屏...

    vc++ 开发实例源码包

    1) 客户向服务器发送请求, 每个请求的长度不定. 请求的长度在第一个INT中指定. 2) 每个服务器通常会向多种客户提供服务, 例如, TS要同时向CP, NP提供服务, CP要向NP和其他CP提供服务, 同时还是其他CP, TS, SP的客户....

    Silverlight2.0功能展示Demo源码

    Silverlight 2.0 使用Thread, Timer, BackgroundWorker, ThreadPool来实现多线程开发。 Thread - 用于线程的创建和控制的类 Timer - 用于以指定的时间间隔执行指定的方法的类 BackgroundWorker - 用于在单独的线程上...

    vc++ 应用源码包_1

    多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树...

    java源码包---java 源码 大量 实例

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码...

    vc++ 应用源码包_6

    多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树...

    vc++ 应用源码包_2

    多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树...

    vc++ 应用源码包_5

    多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树...

    vc++ 应用源码包_3

    多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树...

    java源码包2

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用...

    java源码包3

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用...

    java源码包4

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,...

    JAVA上百实例源码以及开源项目

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码...

    JAVA上百实例源码以及开源项目源代码

    第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例  各种EJB之间的调用源码...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    Django获取多个数据以及文件上传 Django的CBV和FBV Django模板语言循环字典 Django基于正则表达式的URL Django对应的路由名称 Django路由分发 DjangoORM基本创建基本类型以及生成数据库结构 DjangoORM使用mysql注意 ...

Global site tag (gtag.js) - Google Analytics