最新回答 / ToBeBrilliant
我记得老师说过这么一句话:byte[]是数据报中用来存储数据的。 所以我的理解是:通过receive(packet)方法,把接收的信息存在服务器端的packet中,实际上就是存在了packet中的byte[]中,然后通过String info = new String(data,0,packet.length)把packet中的byte[]转化为了String类型。 至于你提问的byte[]长度不够,我想你担心的是用来接收数据的byte data = new byte[1024];太短吧,我以前也有过这种...
2016-08-07
Outputstream os = socket.getOutputStream();
OutputStream 不是抽象类吗,怎么可以有实例呢?
应该是PrintWrite pw = new PrintWrite (socket.getOutputStream());吧
OutputStream 不是抽象类吗,怎么可以有实例呢?
应该是PrintWrite pw = new PrintWrite (socket.getOutputStream());吧
2016-08-06
已采纳回答 / Airly
验证非NULL是编码中很重要的一环。假如本来就是NULL,这是调用各自的close()方法是会报错的。如果在实例化这些对象时出错导致这些对象为NULL,或是实例化没问题但中途出了什么异常导致这些对象为NULL,都会在未经验证非NULL前尝试调用close()方法关闭时报错。
2016-08-05
已采纳回答 / 霸气小刚
实现多线程的方法不止继承Thread一种实际上老师说的是每一个客户端对应一个服务器端(每次响应一个客户端,都要用多线程启动一个服务器端)你说的那种情况是多个客户端对应一个服务器端,显示效果是一样的
2016-08-05
已采纳回答 / 墓头回
服务器是一直处于启动状态的,客户端则是分别处于各自的情况,他们通过socket进行通信,通过流来读取写入要沟通的消息。服务器端不是从头开始运行,而是从while循环里开始的。
2016-08-04
最新回答 / 应龙
因为这个里面的bytes是有固定长度的,是1024,而读取时,读的最多也是1024光一个bytes的字符串就站满了,所以要修改,sb.append(new String(bytes).trim());这样就好了
2016-08-04
已采纳回答 / 应龙
锚点是一种超链接,只是它是页面内部的超链接。http://jingyan.baidu.com/album/8275fc86b79e6446a13cf66b.html
2016-08-03
已采纳回答 / 想_自由
建立了新的线程后,显示客户端信息的方法在一个新的线程中执行。也就是说 显示当前客户端数量和ip地址信息的方法在一个线程中,处理接收客户端的输出信息在另一个线程中。两个线程同时执行,而显示客户端的数量这边的方法很简单,执行起来时间短,所以先输出出来了。你可以在count++前添加sleep函数让该线程暂停一会,结果就会反过来。
2016-08-03