一个使用数据报通讯方式的聊天程序实例,含客户端和后台

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/**********************************客户端:ChatClient.java************************************/importjava.net.*;importjava.io.*;ublicclassChatClient{privateDatagramSockets;privateInetAddresshostAddress;privatebyte[]buf=newbyte[1000];privateDatagramPacketdp=newDatagramPacket(buf,buf.length);/***br方法说明:构造器,这里实现接收用户输入和与服务器通讯*br输入参数:*br返回类型:*/publicChatClient(){try{//使用构造器,创建使用本机任何可用端口的数据包Sockets=newDatagramSocket();//获取本地IPhostAddress=InetAddress.getByName(localhost);System.out.println(Clientstart............);while(true){StringoutMessage=;//读取输入BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));try{outMessage=stdin.readLine();}catch(IOExceptionie){System.err.println(IOerror!);}//如果输入“bye”则表示退出程序if(outMessage.equals(bye))break;StringoutString=Clientsay:+outMessage;byte[]buf=outString.getBytes();//打包数据,发送数据DatagramPacketout=newDatagramPacket(buf,buf.length,hostAddress,ChatServer.PORT);s.send(out);//等待服务器返回s.receive(dp);Stringrcvd=rcvdfrom+dp.getAddress()+,+dp.getPort()+:+newString(dp.getData(),0,dp.getLength());System.out.println(rcvd);}}catch(UnknownHostExceptione){System.out.println(Can;topensocket);System.exit(1);}catch(SocketExceptione){System.out.println(Can;topensocket);e.printStackTrace();System.exit(1);}catch(IOExceptione){System.err.println(Communicationerror);e.printStackTrace();System.exit(1);}catch(Exceptione){System.err.println(Communicationerror);e.printStackTrace();System.exit(1);}System.out.println(ChatClientover);}/***br方法说明:主方法*br输入参数:*br返回类型:*/publicstaticvoidmain(String[]args){newChatClient();}}/**********************************服务器端:ChatClient.java************************************/importjava.net.*;importjava.io.*;importjava.util.*;publicclassChatServer{staticfinalintPORT=4000;//设置服务端口privatebyte[]buf=newbyte[1000];privateDatagramPacketdgp=newDatagramPacket(buf,buf.length);privateDatagramSocketsk;/***br方法说明:服务端构造器,实现读取用户输入和通讯*br输入参数:*br返回类型:*/publicChatServer(){try{//实例化数据报sk=newDatagramSocket(PORT);System.out.println(Serverstart.................);while(true){//等待接收sk.receive(dgp);//获取接收信息Stringrcvd=newString(dgp.getData(),0,dgp.getLength())+,fromaddress:+dgp.getAddress()+,port:+dgp.getPort();System.out.println(rcvd);StringoutMessage=;//读取输入BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));try{outMessage=stdin.readLine();}catch(IOExceptionie){System.err.println(IOerror!);}StringoutString=Serversay:+outMessage;//拷贝字符到缓存byte[]buf=outString.getBytes();//打包数据,发送回信息。DatagramPacketout=newDatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort());sk.send(out);}}catch(SocketExceptione){System.err.println(Can'topensocket);System.exit(1);}catch(IOExceptione){System.err.println(Communicationerror);e.printStackTrace();System.exit(1);}}publicstaticvoidmain(String[]args){newChatServer();}}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功