高手,您好:
    我是一位学习软件工程的学生,最近我在做代码的时候,发现了一个问题:
    在面对Socket通信的开发环境下,如果弟我想让对面的节点接收一个dops.writeboolean(true);语句中的“布尔数值true”的话...
    在面对对方的节点,是为多线程,的情况下...
    (可能每一个线程中,都有需要进行dips.readboolean();语句,读取对方的布尔值以获取对方的“返回值授意”的代码场景...)
    请问诸位高手,这个时候,Socket Java通信中的“dips.readboolean()”这个方法,面向这个通信场景,怎么用....?
    怎么能够让“对的线程”获得自己的boolean数据,进行计算处理...?
    求诸位高手尽可能快速详细的点拨!!
    谢谢高手!!
    一百分奉上!!
                                                                 一位日日夜夜向着梦想奔跑的筑梦者
                                                                 2013年9月21日下午5点58分通信socketjavabooleandips.readboolean()

解决方案 »

  1.   

    补充一下我碰到了的问题:
        我希望能够获得:
        在进行Socket通信的过程中,双方能够接收对方的boolean型变量,以获得“是否下一步”或者“选择某一个逻辑进行执行”的效果...
        现在弟我已经将代码的接收方的逻辑,进行了下面的方式的定义:
        
        图中的sign3整型变量,他的作用是:
        将传递过来的用户的通信数据,其中的“包头”部分的“所需线程标记符”,进行辨认,获得:
        整个接收方节点的“拿出对的线程”“服务用户的通信数据”的功能.
        其中的para3整型变量看,他的作用是:
        整个接收方节点的一个线程中的“对应于所需赋值的字段"的标记符提示"”.
        para3需要传入一个线程的构造方法的参数列表中...
        上图中的buffer3字符串变量,是为每一个线程需要处理的数据.
        这里的buffer3字符串变量,基本上需要每一个子线程的处理...
        不是每一个case语句,都对应着一个线程的...
        有的case语句,如上图中的case3和case4,对应的是为:
        员工工号,和目标好友的IP地址,(以让自己能够P2P传输文件给对方)...
        希望能够得到高手的点拨:
        在这里的代码开发环境下,如果采用“带有包头的字符串类似上文中的buffer3接收到的值进行自己的接收端获取发送端的"返回值"以获得自己的代码逻辑的执行判断条件的选择”,这个工作,buffer3整型变量,是能够胜任的...
        但是,现在如果采用“字符串代替布尔值”进行发送方的“返回值”的代替的话...
        这里的“让接收端的代码进行阻塞等待”的接收端的功能需求,就会受到上面的方案的“挑战”:
        接收端可能会把将要进行判断的“尚未获得值的字符串”进行“空值”的赋予.
        从而让整个程序,无法得到自己应该得到的“预期执行功能”.
        希望能够得到高手的点拨:
        上面的开发场景:
        采用Java的switch语句,进行“接收端干架类的”“根据用户通信的所需功能标记符”进行“拿出对的线程进行相应的计算”的接收端代码结构,采用什么办法,能够解决:
        让接收端的线程,在进行计算的时候,需要与发起端进行数据交互,并且能够完成:
        让接收端获得:
        “自己的代码具有等待发起端的返回值”.
        “自己的代码能够"即时进行""接收到值后""立即进行运算""无延迟""保证用户所申请的线程计算的即时性"” .
        的两个开发需求的解决....
        谢谢高手的点拨!!
                   
      

  2.   

    可能我描述的不够清晰,下面我做了补充:
        如果在进行CS之间的通信的时候,我是在我的这个位置:
        
        进行的“C端用户传输过来的字符串”,根据包头判断对方所需要的服务,然后,将对应的标记符的处理线程,进行调用构造方法,将得到的“各种数据”,当做参数传递到线程的构造方法中,让用户传输来的数据,得到对应的线程的计算...
        现在在这个结构中,是,传输过来的数据,是“能够被阻塞接收的”...
        但是,在我的线程中,我需要进行“计算到中途后”与“另一个节点进行数据交互”,这个时候,我希望能够有一种方法,将“线程阻塞”做好,同时又能够接收另一个节点的数据,并且,传给自己的对应的线程...
      

  3.   

    先了解一下socket传输的是什么东东?
      

  4.   

    我的意思就是:
        在进行一个“多线程的S端节点的代码书写”并且“让S端的每一个线程能够与C端进行本任务内的"多次通信交互"”的结构的代码的设计时,怎样采用代码的书写,能够处理好:
        1.进行的通信,能够将用户的请求,“找对自己的数据处理线程”.
        2.S端节点能够解决:做任务的子线程进行用户的“返回值”的网路传输时,等待对方的“返回值”,而非自己在执行的过程中,见到未赋值的变量,直接“拿默认值进行计算”的问题...
        
        现在我初步想了一个办法,不知道是否能够获得成功:
        采用一个ArrayBlockingQueue的实体,进行“S端的Socket水管口”的类文件的下面代码的书写:
        
        其中第62行的abqsignal对象,是为一个“具有take()方法和put()方法阻塞效果的”“ArrayBlockingQueue类的实体”,我将用户的返回值,通过“writeUTF()函数”向S端书写,其中定义好面向上图中S端的sign3与para3两个变量的包头,如果sign3的值为“0”,那么,这里的语义就是告诉S端:
        我要进行“满足数据交互阻塞等待的子线程的C端返回值的表达”的S端的逻辑分支的选择。
        并且,由于ArrayBlockingQueue队列对于自己的put()方法和take()方法,是拥有“阻塞等待”的能力的,所以,这里的计算,能够满足子线程的“等待C端的返回值”而非进行“赋以默认值”处理自己的逻辑分支的选择的需求...
        现在我唯一不能确认的是:
        这个方法,是否能够满足:“C端与S端的子线程”在进行“子线程内计算的时候”“通信的即时性”的问题:
        是否在子线程卡在将要得到的ArrayBlockingQueue的元素的值的面前,“只要这个元素的值一就位”,整个S端的节点,就会立即分配处理机时间来处理卡在这个阻塞队列的take()方法之前的线程的计算..
        如果会有延迟的话,最多会延迟多长时间...?
        我想要写出的系统,能够满足用户的:通信的快捷,即时,让用户不会因为等待,而产生对于系统的不信任,的效果.
        在线等待高手的回答.
      

  5.   

    说一下现在我做出的进展:
        可以采取:
        1.让原来进行一个业务,需要与用户进行交互数据的线程,拆分成两个线程,接力完成用户的所需服务.
        2.让S端的支干类文件中,定义一个全局作用域的“ArrayBlockingQueue的实体”,在需要与用户交互数据的线程中,首先向用户的水管写出自己的现在的计算进度和按照双方的通信协议写出的报文。然后用ArrayBlockingQueue类的take()方法去将要存储用户的返回值的元素值。然后让整个S端进行等待,C端进行计算后,将含有S端处理分支的包头,写到发出的报文中。S端接收到后,存入这里的ArrayBlockingQueue的实体中,S端的线程进行take()获得整个下一步计算的所需选择的分支判断条件,然后进行下一步的计算.
        两个方案现在我想到的问题是:
        方案1:前一个线程所定义的对象和变量,都需要在之后的线程中重新定义:造成资源的浪费和内存的开销。
        方案2:这个方案,是我比较得意的一个方案,但是,现在我不敢确定的问题是:
        这里的阻塞队列,在接收到了C端的返回值后,会不会在线程中的take()方法,会“立即将值拿到”并且“立即执行”...?
        我不希望做出的系统,会让用户在进行申请服务后,占用用户太长的等待时间..
        做出系统不吸引用户的功能点和性能点...
        希望CSDN论坛中的版主,高手,朋友,能够认真看过我的问题,帮助我,点拨我,让我这个小伙儿...
        尽快把掉头发的问题,彻底解决!!