通信阶段总结(2)

以下是在通信阶段遇到的问题的部分总结,或者说是需要注意的地方。

1.  端口被占用:在测试程序时,有时会发现telnet不上服务器,这时应该首先怀疑是端口出了问题。一般来说端口数1024以下的端口会被系统占用,系统开放的端口从0~65535,这时我们就应该选择1024之后的端口才不会出问题。

2.  死循环:我们在写服务器时,会让服务器不断循环等待客户端的接入,所以我们用到了while的循环语句,但是这就会用个问题:在客户端异常关闭时,服务器端容易出现死循环。要理解这个,就必须了解到当客户端直接关闭时,会向服务器返回一个-1,我们将出现-1作为while的结束条件,这样死循环的问题就解决了。

3.  方法声明的准确性:作为程序员,我们写代码时一定要将方法的声明写清楚,但更重要的是要写得有意义。如果是问牛答马的话,那显然是没有意义的。

4.  流的提前关闭:我们写传文件程序时,还常常犯这样的一个错误:客户端这边刚把文件传走完,就立即关闭客户端,这就使得还处在“路上”(流的管道里)的数据传不到服务器,我理解就好像导弹虽然发射了出去,预定的弹道上飞行,可惜突然失去了动力,必然导弹不会命中目标。

5.  try  catchthrows 的区别:try catch就是用catch捕获try中的异常,并处理其中的异常,用于函数内部。throws就是不处理异常,直接抛出异常,向上抛出,让上一层来处理,用于函数。

6.  违反协议:当然协议事先是怎么定的就应该不怎么用,如果违反协议那么通讯自然会出现错误,无法解析。所以协议定成什么样,写客户端与写服务器的程序员就应该照着来。

7.  协议缺陷:不过即使是双方都按照制定好的协议来执行,那也无法保证就能通讯无阻。如协议本身就有问题!有歧义!最明显的一个例子在制定文件传输协议时,文件的大小需要一个int来制定,这个int的数据是只含文件大小,还是包含了传输文件时所携带的附加的一些bytes?!当然这一点必须要制定清楚。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值