《一个使用数据报通讯方式的聊天程序实例,含客户端和后台》由会员分享,可在线阅读,更多相关《一个使用数据报通讯方式的聊天程序实例,含客户端和后台(5页珍藏版)》请在金锄头文库上搜索。
1、/*ChatClientjava*/ .*;importjava.io.*;ublicclassChatClient privateDatagramSockets;privateInetAddresshostAddress;privatebytebuf=newbyte1000;privateDatagramPacketdp=newDatagramPacket(buf,buf.length);/*方法说明:构造器,这里实现接收用户输入和与服务器通讯*输入参数:*返回类型:*/ publicChatClient()/ 使用构造器,创建使用本机任何可用端口的数据包trySockets=newData
2、gramSocket();/ 获取本地 IP hostAddress=InetAddress.getByName(localhost);System.out.println(Clientstart);while(true)StringoutMessage=;/ 读取输入BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in);tryoutMessage=stdin.readLine();catch(IOExceptionie)System.err.println(IOerror!);/ 如果输入“ bye ”则表
3、示退出程序if(outMessage.equals(bye)break;StringoutString=Clientsay:+outMessage;bytebuf=outString.getBytes();/ 打包数据,发送数据DatagramPacketout=newDatagramPacket(buf,buf.length,hostAddress,ChatServer.PORT);s.send(out);/ 等待服务器返回s.receive(dp);Stringrcvd=rcvdfrom+dp.getAddress()+,+dp.getPort()+:+newString(dp.getDa
4、ta(),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();Sy
5、stem.exit(1);catch(Exceptione)System.err.println(Communicationerror);e.printStackTrace();System.exit(1);System.out.println(ChatClientover);/*方法说明:主方法*输入参数:*返回类型:*/ publicstaticvoidmain(Stringargs) newChatClient();/*ChatClientjava*/ .*;importjava.io.*;importjava.util.*;设置服务端口publicclassChatServer sta
6、ticfinalintPORT=4000;/privatebytebuf=newbyte1000;privateDatagramPacketdgp=newDatagramPacket(buf,buf.length);/*privateDatagramSocketsk;*方法说明:服务端构造器,实现读取用户输入和通讯*输入参数:*返回类型:*/publicChatServer()try/ 实例化数据报sk=newDatagramSocket(PORT);System.out.println(Serverstart);while(true)/ 等待接收sk.receive(dgp);/ 获取接收信
7、息Stringrcvd=newString(dgp.getData(),0,dgp.getLength()+,fromaddress:+dgp.getAddress()+,port:+dgp.getPort();System.out.println(rcvd);StringoutMessage=;/ 读取输入BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in);tryoutMessage=stdin.readLine();catch(IOExceptionie)System.err.println(IOerr
8、or!);StringoutString=Serversay:+outMessage;/ 拷贝字符到缓存bytebuf=outString.getBytes();/ 打包数据,发送回信息。DatagramPacketout=newDatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort();sk.send(out);catch(SocketExceptione)System.err.println(Cantopensocket);System.exit(1);catch(IOExceptione)System.err.println(Communicationerror);e.printStackTrace();System.exit(1);publicstaticvoidmain(Stringargs)newChatServer();