最新回答 / 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
已采纳回答 / 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
最新回答 / 进步中的编程猿
pw.flush();//刷新缓存pw.close();os.close();socket.shutdownInput();br.close();is.close();socket.close();这个是客户端的 其中 socket.shutdownInput 应该改为socket.shutdonwnOutput 因为上面是接收了 输出流 所以是要关闭输出流 再有是你的客户端的地方 有同样的问题 把socket.shutdownOutput 改为socket.s...
2016-08-02
最新回答 / 慕移动9181930
老师,能不能把安装包也给我们啊,谢谢老师了type表示按钮的类型,是提交按钮还是重置按钮;name表示该按钮的名称,以备后台程序ASP、PHP使用
2016-07-31
已采纳回答 / qq_海贼_0
你的代码写错了,服务器端socket是由serverSocket.accept();来初始化,这样获取客户端传来的数据,除此之外你的User类还需要实现序列化接口,implements Serializable,最好把set/get方法补上,JavaBean的习惯养好,另外如果报端口号占用的异常,你就把端口号改一下,因为你按老师步骤实践可能8888端口之前已经用过了。<...code...>
2016-07-30