URL SOCKET代码.docx_第1页
URL SOCKET代码.docx_第2页
URL SOCKET代码.docx_第3页
URL SOCKET代码.docx_第4页
URL SOCKET代码.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例11-6程序清单例11-6 下面是一个用JAVA编写的完整的客户端程序,它从标准输入(键盘)获取客户的输入,发送给服务器端, 并将服务器方返回的信息显示到标准输出(屏幕)上.import java.io.*;import .*;public class talkclient public static void main(String args) trySocket socket=new Socket(,4700);DataInputStream sin=new DataInputStream(new BufferedInputStream(System.in); PrintStream os=new PrintStream(new BufferedOutputStream(socket.getOutputStream(); DataInputStream is=new DataInputStream(socket.getInputStream(); String readline; readline=sin.readLine(); /从键盘上读入一行数据 while(!readline.equals(bye)os.println(readline); / 输出到SOCKET os.flush(); System.out.println(Client:+readline); /将用户输入显示在屏幕上 System.out.println(Server:+is.readLine();/通过SOCKET 读取服务器的应答 readline=sin.readLine();/从屏幕读取下一行输入,循环 os.close(); is.close(); socket.close(); catch (Exception e) System.out.println(Error+e); 下面是服务器端程序,它从客户方接收数据,并显示至标准输出(屏幕),同时,它把从标准输入(键盘)读取的数据发送给客户.import java.io.*;import .*;public class talkserver public static void main(String args)tryServerSocket server=null;try server=new ServerSocket(4700);/构造一个ServerSocket类的实例,并传递给它一个整数作为服务器指定可以使用的给/定端口 catch(Exception e) System.out.println(can not listen to :+e); Socket socket=null; try socket=server.accept(); /监听,等待连接 catch(Exception e) System.out.println(Error:+e); String line; DataInputStream is=new DataInputStream(new BufferedInputStream(socket.getInputStream();/打开一个输入流(从SOCKET输入) PrintStream os=new PrintStream(new BufferedOutputStream(socket.getOutputStream();/打开一个输出流(从SOCKET输出) DataInputStream sin=new DataInputStream(new BufferedInputStream(System.in);/打开一个输入流(从标准输入) System.out.println(Client:+is.readLine();/从SOCKET接收数据并显示 line=sin.readLine(); /从标准输入流(屏幕)读 while(!line.equals(bye) os.println(line); / 通过SOCKET发送给用户 os.flush(); System.out.println(Server:+line);/显示屏幕输入信息 System.out.println(Client:+is.readLine();/显示客户端发送过来的信息 line=sin.readLine(); /从标准输入流(屏幕)读,循环 is.close(); os.close(); socket.close(); server.close(); catch(Exception e) System.out.println(Error:+e); 上述的client/server程序运行时,类似于一个小的talk程序,当客户和服务方建立连接后,双方就可以自由地对话了.运行结果如下:例11-7程序清单例11-7Java数据报编程实例。程序说明:首先服务器端生成DatagramSocket,监听某个端口,准备截获发往该端口的数据报.一旦客户端发送一针对服务器端机器和该端口的数据报,则服务器接收该数据报,从中取得数据报的发送地址和发送端口,并向该发送地址和端口发送一应答报文.报文内容为服务器端的一个文件oneliners.txt中的一行文本,如果该文件不存在,则发送服务器端的当前时间。/服务器端程序:import java.io.*;import .*;import java.util.*;/QuoteServer只是提供服务程序的一个入口,主要的程序流程包含在QuoteServerThread/中.class QuoteServerpublic static void main(String args) new QuoteServerThread().start(); class QuoteServerThread extends Threadprivate DatagramSocket socket=null;/用于发送和接收数据报 private DataInputStream qfs=null; /用于读取oneliners.txt文件 QuoteServerThread()super(QuoteServer);trysocket=new DatagramSocket();System.out.println(QuoteServer listening on port:+socket.getLocalPort();/显示服务器端DatagramSocket的端口号(供客户端使用)catch(.SocketException e)System.err.println(Could not create datagram socket.);this.openInputFile();public void run()while(true)trybytebuf=new byte256; /建立内存缓冲区供DatagramPacket使用DatagramPacket packet;InetAddress address;int port;String dString=null;packet=new DatagramPacket(buf,256);socket.receive(packet); /接收发往该地址和端口的数据报address=packet.getAddress(); /获取数据报的源发送地址port=packet.getPort();/获取数据报的源发送端口if(qfs=null) dString=new Date().toString(); else dString=getNextQuote(); dString.getBytes(0,dString.length(),buf,0); packet=new DatagramPacket(buf,buf.length,address,port); socket.send(packet); /发回服务器端响应数据报 catch(IOException e) System.err.println(IOException:+e); e.printStackTrace(); protected void finalize()if(socket!=null)socket.close();socket=null;System.out.println(Closing datagram socket.); private void openInputFile()tryqfs=new DataInputStream(new FileInputStream(oneliners.txt);catch(java.io.FileNotFoundException e) System.err.println(Could not open quote file.Serving time instead.); private String getNextQuote()String returnValue=null;tryif(returnValue=qfs.readLine()=null)qfs.close();this.openInputFile();returnValue=qfs.readLine(); /该文件应该至少有一行!catch(IOException e)returnValue=IOException occurred in server.;return returnValue; /客户端必须输入java QuoteClient主机名 端口号的形式来运行客户程序import java.io.*;import .*;import java.util.*;class QuoteClientpublic static void main(String args)int port;InetAddress address;DatagramSocket socket=null;DatagramPacket packet;byte sendBuf=new byte256;if(args.length!=2)System.out.println(Usage:java QuoteClient );return; trysocket=new DatagramSocket(); /建立DatagramSocket用于发送数据报catch(.SocketException e)System.err.println(Could not create datagram socket.);if(socket!=null)tryaddress=InetAddress.getByName(args0);port=Integer.parseInt(args1);packet=new DatagramPacket(sendBuf,256,address,port);socket.send(packet);/获得应答packet=new DatagramPacket(sendBuf,256);socket.receive(packet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论