一个使用数据报通讯方式的聊天程序实例,含客户端和后台.doc_第1页
一个使用数据报通讯方式的聊天程序实例,含客户端和后台.doc_第2页
一个使用数据报通讯方式的聊天程序实例,含客户端和后台.doc_第3页
全文预览已结束

下载本文档

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

文档简介

/*客户端:ChatClient.java*/import .*;import java.io.*;ublic class ChatClient private DatagramSocket s; private InetAddress hostAddress; private byte buf = new byte1000; private DatagramPacket dp = new DatagramPacket(buf,buf.length);/* *方法说明:构造器,这里实现接收用户输入和与服务器通讯 *输入参数: *返回类型: */ public ChatClient() try /使用构造器,创建使用本机任何可用端口的数据包Socket s = new DatagramSocket(); /获取本地IP hostAddress = InetAddress.getByName(localhost); System.out.println(Client start.); while(true) String outMessage =; /读取输入 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in); try outMessage = stdin.readLine(); catch(IOException ie) System.err.println(IO error!); /如果输入“bye”则表示退出程序 if(outMessage.equals(bye) break; String outString = Client say: + outMessage; byte buf = outString.getBytes(); /打包数据,发送数据 DatagramPacket out = new DatagramPacket(buf,buf.length,hostAddress,ChatServer.PORT); s.send(out); /等待服务器返回 s.receive(dp); String rcvd = rcvd from + dp.getAddress() + , + dp.getPort() + : + new String(dp.getData(),0,dp.getLength(); System.out.println(rcvd); catch(UnknownHostException e) System.out.println(Can;t open socket); System.exit(1); catch(SocketException e) System.out.println(Can;t open socket); e.printStackTrace(); System.exit(1); catch(IOException e) System.err.println(Communication error); e.printStackTrace(); System.exit(1); catch(Exception e) System.err.println(Communication error); e.printStackTrace(); System.exit(1); System.out.println(ChatClient over); /* *方法说明:主方法 *输入参数: *返回类型: */ public static void main(String args) new ChatClient(); /*服务器端:ChatClient.java*/import .*;import java.io.*;import java.util.*;public class ChatServer static final int PORT = 4000;/设置服务端口 private byte buf = new byte1000; private DatagramPacket dgp =new DatagramPacket(buf,buf.length); private DatagramSocket sk;/* *方法说明:服务端构造器,实现读取用户输入和通讯 *输入参数: *返回类型: */ public ChatServer() try /实例化数据报 sk = new DatagramSocket(PORT); System.out.println(Server start.); while(true) /等待接收 sk.receive(dgp); /获取接收信息 String rcvd = new String(dgp.getData(),0,dgp.getLength()+ , from address: + dgp.getAddress()+ , port: + dgp.getPort(); System.out.println(rcvd); String outMessage =; /读取输入 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in); try outMessage = stdin.readLine(); catch(IOException ie) System.err.println(IO error!); String outString = Server say: + outMessage; /拷贝字符到缓存 byte buf = outString.getBytes(); /打包数据,发送回信息。 DatagramPacket out = new DatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort(); sk.send(out); catch(SocketException e) System.err.println(Cant open socket); System.exit(1); catch(IOExceptio

温馨提示

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

评论

0/150

提交评论