预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共30页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

或许有点长 但是一步步教你 我想你也愿意看 7.2面向套接字编程 我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式 7.2.1使用套接字实现基于TCP协议的服务器和客户机程序 依据TCP协议,在C/S架构的通讯过程中,客户端和服务器的Socket动作如下: 客户端: 1.用服务器的IP地址和端口号实例化Socket对象。 2.调用connect方法,连接到服务器上。 3.将发送到服务器的IO流填充到IO对象里,比如BufferedReader/PrintWriter。 4.利用Socket提供的getInputStream和getOutputStream方法,通过IO流对象,向服务器发送数据流。 5.通讯完成后,关闭打开的IO对象和Socket。 服务器: 1.在服务器,用一个端口来实例化一个ServerSocket对象。此时,服务器就可以这个端口时刻监听从客户端发来的连接请求。 2.调用ServerSocket的accept方法,开始监听连接从端口上发来的连接请求。 3.利用accept方法返回的客户端的Socket对象,进行读写IO的操作 通讯完成后,关闭打开的流和Socket对象。 7.2.1.1开发客户端代码 根据上面描述的通讯流程,我们可以按如下的步骤设计服务器端的代码。 第一步,依次点击Eclipse环境里的“文件”|“新建”|“项目”选项,进入“新建项目”的向导对话框,在其中选中“Java项目”,点击“下一步”按钮,在随后弹出的对话框里,在其中的“项目名”一栏里,输入项目名“TCPSocket”,其它的选项目 选择系统默认值,再按“完成”按钮,结束创建Java项目的动作。 第二步,完成创建项目后,选中集成开发环境左侧的项目名“TCPSocket”,点击右键,在随后弹出的菜单里依次选择“新建”!“类”的选项,创建服务器类的代码。 在随后弹出的“新建Java类”的对话框里,输入包名“tcp”,输入文件名“ServerCode”,请注意大小写,在“修饰符”里选中“公用”,在“想要创建哪些方法存根”下,选中“publicstaticvoidmain(String[]args)”单选框,同时把其它两项目取消掉,再按“完成”按钮,可以生成代码。 第三步,在生成的代码里,编写引入Java包的代码,只有当我们引入这些包后,我们才能调用这些包里提供的IO和Socket类的方法。 packagetcp; importjava.io.BufferedReader; importjava.io.BufferedWriter; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.OutputStreamWriter; importjava.io.PrintWriter; importjava.net.ServerSocket; importjava.net.Socket; 第四步,编写服务器端的主体代码,如下所示。 publicclassServerCode { //设置端口号 publicstaticintportNo=3333; publicstaticvoidmain(String[]args)throwsIOException { ServerSockets=newServerSocket(portNo); System.out.println("TheServerisstart:"+s); //阻塞,直到有客户端连接 Socketsocket=s.accept(); try { System.out.println("AccepttheClient:"+socket); //设置IO句柄 BufferedReaderin=newBufferedReader(newInputStreamReader(socket .getInputStream())); PrintWriterout=newPrintWriter(newBufferedWriter( newOutputStreamWriter(socket.getOutputStream())),true); while(true) { Stringstr=in.readLine(); if(str.equals("byebye")) { break; } System.out.println("InServerreveivedtheinfo:"+str); out.println(str); } } finally {