咨询电话

硅谷成长日记 置顶

发表于2017-03-16 15:08:51 次查看
这篇主要是对于聊天窗口的设计容易出现的问题以及如何优化功能做一个总结。

1、连接要用到多线程:将自己的类实现Runable接口,将接受程序写在run()方法里面。

2、所有在文本框里面显示的都是字符串型,所以要注意数据类型的转换。

3、地址和端口号是客户端提供的,服务端只需要连接端口号就行,在socket定义时要用到端口号。

4、发送时要先从文本框取得值然后发送,而接受的话先要接受数据包,再赋值给文本框。

5、服务端接收数据包里面含有地址和端口号,可以通过pa.setAddress(packet.getAddress())获得。端口号也是如此。

6、执行程序是要先从客户端发消息,服务端接收到后才能发消息,因为在我做的程序里面服务端要先得到客户端传送过来的地址和端口号(如何得到见第五条),才能进行发送。

7、在写服务端发送消息给客户端的程序时,一定不要再重新定义socket,因为我一开始就直接是将socket定义为属性的,如果我再重新定义那么我接收到的便是一个空的地址,那么像这种情况你的客户端就会既接收不到信息而且程序还不报错!因为定义为属性的packet处于直接接收状态,所以packet可以在每次发送时再次定义。

8、在本机中自己定义一个客户端和服务端互传消息时,服务端要设置一个setSoTimeout(10000)超市等待。表示如果对方连接状态10秒没有收到数据的话强制断开客户端。

9、除了可以在自己本机发送消息外。还可以通过改变IP地址与在同一局域网内的电脑进行连接。别人连我的话只需要将IP地址改为我的IP地址,同时告诉我他的端口号就可以了。在这里可以做个小优化,显示你每次连接不同服务端是的IP地址。

代码如下:

String s = iAddr.toString();//iAddr表示我设置当前连接的IP地址

int pos = s.indexOf('/');//查找截取/后的IP地址

s = s.substring(pos+1);

txtIP.setText(s);

10、优化聊天窗口,在聊天时想要显示当前消息,关键代码如下:

Date date = new Date();

SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd日 HH:mm:ss  E");

String time = sf.format(date);

在写日期的时候要记得区分大小写,在Java中大小写是要严格区分的!

附成功执行后的截图:


                                                                                                                                                                     硅谷学员——丁薇

上一篇:硅谷成长日记
下一篇:硅谷成长日记

开班信息

开班信息
UI设计技能强化班 2018-03-10 火热报名
JAVA零基础项目研发班 2018-03-10 火热报名
嵌入式精英班 2018-03-10 火热报名

联系我们

联系人:张老师

咨询热线:0731-83755989

地址:湖南省长沙市岳麓区高新开发区延农创业基地5楼

分部地址:湖南省长沙市芙蓉区五一大道供销大厦(新世界百货)2092

在线客服
  • 点击这里给我发消息
  • 点击这里给我发消息
  • 微信扫一扫
  • 官方微信