Java常见错误总结——TCP/IP网络通信

 

Java常犯错误分析——TCP/IP网络通信

1. IP错误、port错误、port被占用

发生场景:两个客户端同时连接同一个服务器  

原因分析:服务器未开启多线程  相应客户端的链接

改正方式:开启多线程 可用 while(true)循环等待客户端连接

代码示例:

while(true){

java.net.Socket client = server.accept();

//创建一个线程对象,来处理

serverThread st = new serverThread(client);

st.start();

}

 

2. 连接时不同的循环方式   while(true)

发生场景:两个客户端同时连接同一个服务器  

原因分析:服务器未开启多线程  相应客户端的链接

改正方式:开启多线程 可用 while(true

代码示例:

while(true){

java.net.Socket client = server.accept();

//创建一个线程对象,来处理

serverThread st = new serverThread(client);

st.start();

}

对比:

java.net.Socket client = server.accept();

while(true){

//创建一个线程对象,来处理

serverThread st = new serverThread(client);

st.start();

}

3. read()   readFully()  以及 for(){} 循环的区别。

发生场景:两个客户端同时连接同一个服务器  

原因分析:服务器未开启多线程  相应客户端的链接

改正方式:开启多线程 可用 while(true

代码示例:

java.io.InputStream ins = client.getInputStream();

java.io.OutputStream ous = client.getOutputStream();

java.io.DataInputStream dins = new java.io.DataInputStream(ins);

for (int t = 0; t < len; t++) {

by[t] = dins.readByte();

}  //可以完全读尽的循环 读取方法

以及 dins.readFully(by)  是可以完全读尽的。

至于 dins.read(by)  则可能只读到一部分。

4. EOF(End Of File)Exception 

发生场景:读取流的时候会发生。

原因分析:一个流已经读到了末尾

eg:写入的是10byte, 却要读20byte

改正方式:注意输入输出流的匹配

5. 通信协议错误

发生场景:客户端与服务端传输出错

原因分析:客户端与服务端的通信协议不一致

改正方式:统一通信协议。

6. 内存溢出  Out Of Memory Error

发生场景:创建一个数组时。

原因分析:创建一个过大的内存空间  会发生这种错误。

改正方式:注意创建数组的长度大小。

代码示例:

 

7. 断开(正常的异常)

发生场景:网络无法连接等

原因分析:存在各种客观原因,断电、断网等等,都有可能

改正方式:避免各种客观原因的发生,同时有应对方案

错误显示:

 

java.net.SocketException: Connection reset by peer: socket write error

8.  try-catch throws 应用的位置

共同点:try-catch 是用于捕获程序运行时可能存在的异常,throws用于抛出异常,两种都可以用来解决存在异常的方法,

异同点:try-catch 可以自己处理异常,报告异常。而throws把异常抛出,等待其他处理。

说明:具体的情况,具体分析。要先看异常是否程序所必要的。

9. 性能问题  

发生场景:程序运行缓慢

原因分析:创建了过多不必要的对象,浪费内存空间

改正方式:某些情况下的对象,可以定义成属性,避免重复创建

代码示例:

if (b == 1) {

// 读取文件数据

int len = dins.readInt();

byte[] by = new byte[len];

}

改正:

int len; byte[] by;

if (b == 1) {

   // 读取文件数据

   len = dins.readInt();

   by = new byte[len];

}

10. 服务端截屏与客户端接收屏幕的时间间隔

发生场景:服务端与客户端显示的画面不同步。

原因分析:网络传输缓慢,或者文件传输过大。

改正方式:压缩后传输,改进性能。

 

 

 

ps:对于javaeye的 这种发表博文的功能无语了...  求救于各位  该怎么弄 格式才会好看..

pps: 我在Word 里面编排的好好的, copy到这里就 全变了。

ppps: 可视化编辑器 与 发表出来的完全不同。。。  ⊙﹏⊙b汗

 

 

你可能感兴趣的:(java,多线程,应用服务器,网络协议,网络应用)