Further Tips in Multi-user Communication in P5 - [Works]

最近大部分时间扑在准备第二次托福网考上,抽出时间看掉了Learning P5 数据流那一章节 ( CH19 )。与各位童鞋分享一些小的技巧。

pde 源文件

按照Shiffman 的教程中的19.5 至19.7 节的multi-user whiteboard 代码实例,俺个人在自己的PC 上实测下来,程序会在运行若干秒后出现null pointer exception 的报错。用println() 函数对两个pde 间传输的字符串进行检查。发现即便在之前进行了client.available() > 0 的判定,在出现报错的时候println 输出的字符串依然是null。不知道其他童鞋的情况怎么样,以下是俺的解决办法,针对客户端的pde。

if(dataIn != null) {
    println(dataIn);
    dataSplit = splitTokens(dataIn,",*");
    if(dataSplit.length == 3) {
      b = float(dataSplit[2]);
      println(b);
    }
}

由于之前所说的问题,dataIn 输出为null,对它进行拆分后调取的dataSplit 数组中的元素,运行到这一步自然会出现null pointer exception 的报错。所以可以按照上述代码在拆分前对dataIn 再做一次判断。同理俺在服务器端的pde 中也进行了类似的判断 if ( incomingMessage != null )。

第二个小技巧是multi-user whiteboard 的两个客户端对服务器端进行的是相同的处理,但如果各位童鞋需要不同的处理呢,譬如类似俺做的这个小样,客户端分别是RGB三个色彩通道,服务器端会呈现三个通道汇总后的颜色。其实也很简单,在客户端的字符输出前加上一个标签。

dataOut = "R" + r + "*";

并在服务器端对接收到的字符串的首字母进行判断if( incomingMessage.charAt(0) == 'R')。从而可以对不同的客户端数据进行分别的处理。

哈,以上只是俺个人在运行Shiffman 教程中的实例发生报错问题时的两个处理方法。与各位童鞋分享,希望能帮助到遇到相同问题的童鞋。



Posted by at 18:51:00 | Trackback (0) | Edit |

Comments



Add Comment