ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:763.38KB ,
资源ID:12368157      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12368157.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(32 Java网络编程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

32 Java网络编程.docx

1、32 Java网络编程32. Java网络编程本季讲解了JAVA中TCP和UDP程序的设计,同时讲解了多线程在服务器编程上的作用。 blog: 零基础学JAVAJava SE应用部分-32.Java网络编程 2009-03-05C/S程序:表示的客户/服务器程序,每次需要编写两套程序|- MSN、QQ:一般会有两套程序,一个是服务器端,另外一个是客户端B/S程序:表示的浏览器/ 服务器,可以理解为动态WEB,论坛本季目标Sock:TCP通讯数据报:UDP通讯Socket程序需要的类:1、所有的用户对于服务器来讲都是一个Socket客户端。2、在服务器上使用ServerSocket类接收客户端的

2、SocketSocket通信模型Socket编程的四个基本步骤编写一个服务器程序:ServerSocket只要是网络连接都要求有一个端口public ServerSocket(int port)public Socket accept() throws IOException通过此方法等待客户端的socket进行访问。ServerSocket01服务器端代码:此服务器端的功能非常的简单,就是接收客户端的请求,之后在屏幕上输出哈Windows中有一个telnet命令,通过此命令就可以直接连接到服务器了。客户端收到字符串,同时服务器端显示“客户端回应完毕”只要是符合网络的协议标准,所有的客户端都可

3、以连接到此服务器端上。但是一般情况下,很少说直接去使用telnet连接,往往会编写一个客户端。Socketpublic Socket(String host,int port) throws UnknownHostException,IOException指定一个主机的IP地址和一个端口ClientSocket01客户端代码:验证下效果,和telnet一样哈以上代码验证了,程序需要编写两套程序: 一个是服务器端 另外一个是客户端现在发现所有的代码只是执行一次就完了,那么能不能说执行多次呢?由我的用户可以自己发出中断的指令。这样的做法我们可以做一个Socket经典 Echo程序用户发什么内容,服

4、务器就会回应什么内容:EchoServer代码:importjava.io.*;import.*;publicclassEchoServer/此处为了省去处理try.catch直接抛出了异常publicstaticvoidmain(String args)throwsExceptionServerSocket server =null;/输出肯定使用打印流PrintStream out =null;/服务器肯定也要接收输入BufferedReader buf =null;/1.实例化一个服务器的监听端server =newServerSocket(9999);/可以使用一种死循环的方式接收内容

5、Socket client =null;while(true)/不断接收内容client = server.accept();/准备好向客户端输出内容out =newPrintStream(client.getOutputStream();/而且客户端要有输入给服务器端buf =newBufferedReader(newInputStreamReader(client.getInputStream();/下面先给出一个完整的信息提示out.println(您好!欢迎光临:);out.println(输入bye表示退出哈);/一个用户要发很多的信息while(true)/接收客户端发送而来的内容

6、String str = buf.readLine();if(str=null)/如果str为空就表示退出break;else/如果输入的是bye则表示系统退出if(bye.equals(str)break;/可以对用户发来的信息进行回应out.println(ECHO:+str);/进行收尾工作out.close();buf.close();client.close();/如果要关闭服务器时可以设置标志/server.close();看下效果:现在我们用telnet连接上去看下效果输入bye退出连接同时可以多次连接典型的包含了输入和输出EchoClient代码:importjava.io.*

7、;import.*;publicclassEchoClientpublicstaticvoidmain(String args)throwsExceptionSocket client =null;BufferedReader buf =null;PrintStream out =null;/1.连接服务器client =newSocket(localhost,9999);/接收服务器端的输入信息buf =newBufferedReader(newInputStreamReader(client.getInputStream();System.out.println(buf.readLine(

8、);System.out.println(buf.readLine();/之后准备从键盘接收数据BufferedReader in =newBufferedReader(newInputStreamReader(System.in);String userInput =null;out =newPrintStream(client.getOutputStream();while(userInput=in.readLine()!=null)/表示有内容进来,要把内容发送到客户端out.println(userInput);/接收服务器端的回应System.out.println(buf.read

9、Line();out.close();in.close();client.close();但是此程序有一个问题,即:当一个用户操作的时候,其他用户是不能操作的程序是单线程的,所以每次只能一个用户访问。此处如果想解决,则只能使用多线程进行操作。首先需要编写一个线程的类:ThreadServer代码:importjava.io.*;import.*;publicclassThreadServerimplementsRunnable/现在所有的Socket都要归入到一个线程之中privateSocket client =null;publicThreadServer(Socket client)th

10、is.client = client;publicvoidrun()/要不断的接收客户发送来的信息String input =null;/通过BufferedReader进行接收BufferedReader buf =null;/有一个输出的对象PrintStream out =null;trybuf =newBufferedReader(newInputStreamReader(this.client.getInputStream();while(true)/接收发送过来的信息input = buf.readLine();out =newPrintStream(this.client.get

11、OutputStream();if(bye.equals(input)break;elseout.println(ECHO:+input);this.client.close();catch(Exception e)EchoServer01服务器端代码:importjava.io.*;import.*;publicclassEchoServer01/此处为了省去处理try.catch直接抛出了异常publicstaticvoidmain(String args)throwsExceptionServerSocket server =null;/输出肯定使用打印流PrintStream out

12、=null;/服务器肯定也要接收输入BufferedReader buf =null;/1.实例化一个服务器的监听端server =newServerSocket(9999);/可以使用一种死循环的方式接收内容Socket client =null;while(true)/不断接收内容client = server.accept();/在此处启动了一个线程newThread(newThreadServer(client).start();使用telnet测试效果哈通过以上代码,可以发现,多线程实际上在服务器上是比较常用的。服务器 = 多线程 + IO + SocketSocket程序实际上是属

13、于TCP程序,是一个稳定的连接UDP程序:数据报程序Send发送端代码:importjava.io.*;import.*;publicclassSendpublicstaticvoidmain(String args)throwsExceptionDatagramSocket ds =null;DatagramPacket dp =null;/发送端必须有一个监视的端口ds =newDatagramSocket(9999);String str =;/发送的内容只能是byte数组/接收端端口号是8888dp =newDatagramPacket(str.getBytes(),str.lengt

14、h(),InetAddress.getByName(localhost),8888);ds.send(dp);ds.close();看下效果:信息已经发送出去了哈下面我们再写个接收代码Receive接收端代码:importjava.io.*;import.*;publicclassReceivepublicstaticvoidmain(String args)throwsExceptionDatagramSocket ds =null;DatagramPacket dp =null;/要有一个空间大小byteb =newbyte1024;/ds的监听端口就表示发送端指定好的ds =newDatagramSocket(8888);dp =newDatagramPacket(b,b.length);/开始接收ds.receive(dp);System.out.println(newString(dp.getData().trim();ds.close();现在我们测试一下哈首先必须接收端开启着然后我们运行发送端发送信息总结网络编程在实际中确实使用越来越少,JAVA的主要特点全部集中在了JAVA WEB上了。只需要了解以下概念即可: 网络程序的分类:TCP、UDP 服务器 = IO + Socket + Thread#本文出自 “王乾De技术博客” 博客,谢绝转载!

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

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