java聊天程序入门级开发.docx

上传人:b****8 文档编号:11033946 上传时间:2023-02-24 格式:DOCX 页数:37 大小:21.28KB
下载 相关 举报
java聊天程序入门级开发.docx_第1页
第1页 / 共37页
java聊天程序入门级开发.docx_第2页
第2页 / 共37页
java聊天程序入门级开发.docx_第3页
第3页 / 共37页
java聊天程序入门级开发.docx_第4页
第4页 / 共37页
java聊天程序入门级开发.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

java聊天程序入门级开发.docx

《java聊天程序入门级开发.docx》由会员分享,可在线阅读,更多相关《java聊天程序入门级开发.docx(37页珍藏版)》请在冰豆网上搜索。

java聊天程序入门级开发.docx

java聊天程序入门级开发

/*

try{.....}中定义的局部变量只能在try{......}中使用,不能在其他地方使用

*/

publicclassTest

{

publicstaticvoidmain(String[]args)

{

try

{

inti=10;

System.out.println("i="+i);

}

catch(Exceptione)

{

//System.out.println("i="+i);//error因为在try{.....}中定义的局部变量只能在try{....}中使用,try{.....}中定义的局部变量不能在catch(..){.....}和finally{.....}中使用

}

finally

{

//System.out.println("i="+i);//error原因同上

}

//System.out.println("i="+i);//总结:

try{.....}中定义的局部变量只能在try{......}中使用,不能在其他地方使用

}

}

/*

错误的程序

*/

importjava.io.*;

import.*;

publicclassTServer

{

publicstaticvoidmain(String[]args)

{

ServerSocketss=null;

Sockets=null;

DataInputStreamdis=null;

try

{

ss=newServerSocket(8888);

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

dis.close();//这样写就错了,因为本语句永远无法得到执行

s.close();//同上

ss.close();//同上

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

}

}

/*

错误的程序

*/

importjava.io.*;

import.*;

publicclassTServer_2

{

publicstaticvoidmain(String[]args)

{

try

{

ServerSocketss=newServerSocket(8888);

Sockets=null;

DataInputStreamdis=null;

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dos.close();//error找到不到dos

s.close();//error同上

ss.close();//error同上

}

catch(Exceptione)

{

}

}

}

}

/*

错误的程序

*/

importjava.io.*;

import.*;

publicclassTServer_3

{

publicstaticvoidmain(String[]args)

{

ServerSocketss;//会导致40行出错

Sockets;//会导致41行出错

DataInputStreamdis;//会导致42行出错

try

{

ss=newServerSocket(8888);

s=null;

dis=null;

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dis.close();//40行error编译器认为dis可能还没有被初始化

s.close();//41行error同上

ss.close();//42行error同上

}

catch(Exceptione)

{

}

}

}

}

/*

正确的程序

*/

importjava.io.*;

import.*;

publicclassTServer_4

{

publicstaticvoidmain(String[]args)

{

ServerSocketss=null;

Sockets=null;

DataInputStreamdis=null;

try

{

ss=newServerSocket(8888);

s=null;

dis=null;

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dis.close();

s.close();

ss.close();

}

catch(Exceptione)

{

}

}

}

}

/**

*2009年3月27日10:

36:

30

*有关Java虚拟机异常处理机制的问题

*

**/

classA

{

publicvoidf()

{

System.out.println("AAAA");

}

}

publicclassTest

{

publicstaticvoidmain(String[]args)

{

Aaa1=null;//aa1必须的被赋值,否则会导致21行出错,因为编译器认为16行并一定会成功给aa1赋值,

//不过令人遗憾的是:

编译器在编译时却检测不出空指针异常错误,以本程序为例,因为16行并不一定可以成功给aa1赋值,所以理论上讲21行的aa1仍然可能是null,但是令人遗憾的是编译器编译时却检测不出这种错误,它只会在运行时抛出java.lang.NullPointerException异常

try

{

aa1=newA();//16行

}

catch(Exceptione)

{

}

//aa1=newA();

aa1.f();//21行编译器在编译时检测不出空指针异常错误,以本程序为例,因为16行并不一定可以成功给aa1赋值,所以理论上讲本行中的aa1仍然可能是null,但是令人遗憾的是编译器编译时却检测不出这种错误,它只会在运行时抛出java.lang.NullPointerException异常

///*

//*下面两行代码验证了:

//编译器在编译时检测不出空指针异常错误,它只会在运行时抛出

//java.lang.NullPointerException异常

//*/

//Aaa2=null;

//aa2.f();//编译器编译时检测不会出错,只会在运行时抛出java.lang.NullPointerException异常

}

}

importjava.io.*;

import.*;

publicclassTServer

{

publicstaticvoidmain(String[]args)

{

ServerSocketss=null;//这里的ss必须得初始化,哪怕初始化为null也可以,否则会导致39行报错,因为编译器认为14行并不一定会给ss赋值成功,不过很可笑的是Java编译器认为try{......}中代码执行并不一定成功,所以要求你在try之前必须得对变量赋初值,但是编译器却检测不出赋初值为null的错误,以本程序为例,这里将ss赋为null,按照逻辑,try{....}中代码并不一定能给ss赋正确的值,那最终结果ss仍可能是null,所以理论上讲:

39行代码仍然可能是错的,不过JAva编译器却检测不出这种错误,我估计是因为Aaa=null;aa.成员名;这种方式编译器编译时是检测不出这种错误的,只会跑出NullPointerException异常

Sockets=null;

DataInputStreamdis=null;

try

{

ss=newServerSocket(8888);//14行

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dis.close();

s.close();

ss.close();//39行

}

catch(Exceptione)

{

}

}

}

}

一个发一个接

importjava.io.*;

import.*;

publicclassTClient

{

publicstaticvoidmain(String[]args)

{

Sockets=null;

DataOutputStreamdos=null;

try

{

s=newSocket("127.0.0.1",8888);

dos=newDataOutputStream(s.getOutputStream());

//dos.writeUTF("哈哈");

dos.writeUTF("嘿嘿");

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dos.close();

s.close();

}

catch(Exceptione)

{

}

}

}

}

importjava.io.*;

import.*;

publicclassTServer

{

publicstaticvoidmain(String[]args)

{

ServerSocketss=null;

Sockets=null;

DataInputStreamdis=null;

try

{

ss=newServerSocket(8888);

while(true)

{

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

System.exit(-1);

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

System.exit(-1);

}

finally

{

try

{

dis.close();//error找到不到dos

s.close();//error同上

ss.close();//error同上

}

catch(Exceptione)

{

}

}

}

}

每人能且只能说一句

importjava.io.*;

import.*;

publicclassTClient

{

publicstaticvoidmain(String[]args)throwsException

{

Sockets=null;

DataInputStreamdis=null;

DataOutputStreamdos=null;

BufferedReaderbr=null;

try

{

s=newSocket("127.0.0.1",8888);

dis=newDataInputStream(s.getInputStream());

dos=newDataOutputStream(s.getOutputStream());

br=newBufferedReader(newInputStreamReader(System.in));

while(true)

{

Stringstr=br.readLine();

dos.writeUTF(str);

if(str.equalsIgnoreCase("再见"))

break;

str=dis.readUTF();

System.out.println("对方说的是:

"+str);

if(str.equalsIgnoreCase("再见"))

break;

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

}

catch(Exceptione)

{

}

finally

{

try

{

dis.close();

dos.close();

s.close();

}

catch(Exceptione)

{

}

}

}

}

importjava.io.*;

import.*;

publicclassTServer

{

publicstaticvoidmain(String[]args)

{

ServerSocketss=null;

Sockets=null;

DataInputStreamdis=null;

DataOutputStreamdos=null;

BufferedReaderbr=null;

try

{

ss=newServerSocket(8888);

s=ss.accept();

dis=newDataInputStream(s.getInputStream());

dos=newDataOutputStream(s.getOutputStream());

br=newBufferedReader(newInputStreamReader(System.in));

while(true)

{

Stringstr=dis.readUTF();

System.out.println("对方说的是:

"+str);

if(str.equalsIgnoreCase("再见"))

break;

str=br.readLine();

dos.writeUTF(str);

if(str.equalsIgnoreCase("再见"))

break;

}

}

catch(SocketExceptione)

{

System.out.println("网络连接出错,程序终止");

}

catch(IOExceptione)

{

System.out.println("读写数据出错,程序终止");

}

catch(Exceptione)

{

}

finally

{

try

{

dis.close();

dos.close();

s.close();

ss.close();

}

catch(Exceptione)

{

}

}

}

}

任意一方都可以连着说

importjava.io.*;

import.*;

publicclassTClient

{

publicstaticvoidmain(String[]args)throwsException

{

Sockets=newSocket("127.0.0.1",8888);

DataInputStreamdis=newDataInputStream(s.getInputStream());

DataOutputStreamdos=newDataOutputStream(s.getOutputStream());

newClientRead(dis).start();

newClientWriter(dos).start();

}

}

classClientReadextendsThread

{

privateDataInputStreamdis=null;

publicClientRead(DataInputStreamdis)

{

this.dis=dis;

}

publicvoidrun()

{

while(true)

{

try

{

Stringstr=dis.readUTF

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1