计算机网络课程设计UDP聊天室代码_第1页
计算机网络课程设计UDP聊天室代码_第2页
计算机网络课程设计UDP聊天室代码_第3页
计算机网络课程设计UDP聊天室代码_第4页
计算机网络课程设计UDP聊天室代码_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

计算网络计算网络 UDP UDP 聊天室聊天室 学 院 计算机学院 专 业 软件工程 年级班别 2011 级 1 班 学 号 学生姓名 指导教师 许青林 成 绩 实验目的实验目的 UDP 是无链接的通信方式 通信开销小 利用 UDP 实现聊天系统 通过实 验掌握 UDP 的工作原理及应用方法 实验要求实验要求 1 采用多线程技术 多用户同时在线 2 实现群聊功能 一个人发消息多人可收到 3 用 JAVA 实现 UDP 开发模型如下 系统结构系统结构 聊天系统分为服务器端和客户端 服务器程序作为一个中转站 所有客户 端都只与服务器进行通信 如图 程序设计程序设计 服务器端 服务器与客户间通过套接口 Socket 连接 在 java 中使用套接口 相当简单 Java API 为处理套接口的通信提供了一个类 Socket 使得编写 网络应用程序相对容易 服务器采用多线程以满足多用户的请求 服务端主要 用到InetAddress DatagramSocket DatagramPacket 三个类 InetAddress 用 于描述和包装一个 Internet IP 地址 DatagramSocket 用于接收和发送 UDP 的 Socket 实例 DatagramPacket 用于处理报文 它将 Byte 数组 目标地址 目标端口 等数据包装成报文或者将报文拆卸成 Byte 数组 客户端 客户端是一个 Java Application 程序 客户通过 Socket 建立与服务器的 连接 主要用到InetAddress DatagramSocket DatagramPacket 三个类三个类 界面设计 客户端 UI 设计 Chat Boxes 有五个输入框 包括本机端口 服务器端口 本 机 IP 地址 服务器 IP 地址输入以及消息输入框 依次为 Personal port Server port Nickname 和 Server IP 以及 send 按钮左旁的输入框 且 在输入的消息中自动获取本机时间 然后和发送消息一起打包发到服务器 服 务器接收后发到客户端 服务器 IP 不为空 Server UI 设计 Server chat boxes 有两个输入框 分别是服务器端口 Server port 和客户端端口 Personal port 和一个连接按钮 Connect 代码代码 按照下面的格式创建相应的 按照下面的格式创建相应的 javajava 文件 将代码粘贴复制即文件 将代码粘贴复制即 可 可 1 1 Sendmessage javaSendmessage java packagepackage chatboxes chatboxes importimport java io Serializable java io Serializable importimport InetAddress InetAddress publicpublic classclass SendmessageSendmessage implementsimplements Serializable Serializable privateprivate staticstatic finalfinal longlong serialVersionUIDserialVersionUID 1L 1L privateprivate InetAddressInetAddress addr addr privateprivate InetAddressInetAddress destaddr destaddr privateprivate StringString name name privateprivate StringString msg msg publicpublic Sendmessage InetAddressSendmessage InetAddress addr addr InetAddressInetAddress destaddr destaddr StringString name name StringString msg msg this addrthis addr addr addr this destaddrthis destaddr destaddr destaddr this namethis name name name this msgthis msg msg msg publicpublic InetAddressInetAddress getAddr getAddr returnreturn addr addr publicpublic InetAddressInetAddress getDestaddr getDestaddr returnreturn destaddr destaddr publicpublic StringString getName getName returnreturn name name publicpublic StringString getMsg getMsg returnreturn msg msg 2 2 Serverchar javaServerchar java packagepackage chatboxes chatboxes importimport java awt BorderLayout java awt BorderLayout importimport java awt Container java awt Container importimport java awt FlowLayout java awt FlowLayout importimport java awt GridLayout java awt GridLayout importimport java awt event ActionEvent java awt event ActionEvent importimport java awt event ActionListener java awt event ActionListener importimport java io BufferedInputStream java io BufferedInputStream importimport java io ByteArrayInputStream java io ByteArrayInputStream importimport java io ByteArrayOutputStream java io ByteArrayOutputStream importimport java io IOException java io IOException importimport java io ObjectInputStream java io ObjectInputStream importimport java io ObjectOutputStream java io ObjectOutputStream importimport DatagramPacket DatagramPacket importimport DatagramSocket DatagramSocket importimport InetAddress InetAddress importimport MulticastSocket MulticastSocket importimport SocketException SocketException importimport UnknownHostException UnknownHostException importimport java util ArrayList java util ArrayList importimport java util Collection java util Collection importimport java util Iterator java util Iterator importimport java util List java util List importimport java util ListIterator java util ListIterator importimport javax swing JButton javax swing JButton importimport javax swing JFrame javax swing JFrame importimport javax swing JLabel javax swing JLabel importimport javax swing JPanel javax swing JPanel importimport javax swing JScrollPane javax swing JScrollPane importimport javax swing JTextArea javax swing JTextArea importimport javax swing JTextField javax swing JTextField publicpublic classclass ServerchatServerchat implementsimplements Runnable Runnable ActionListener ActionListener privateprivate ListList addList addList JTextAreaJTextArea showArea showArea JLabelJLabel lbl1 lbl1 lbl2 lbl2 JTextFieldJTextField sendPortText sendPortText receivePortText receivePortText JFrameJFrame mainJframe mainJframe JButtonJButton startBtn startBtn JScrollPaneJScrollPane JSPane JSPane JPanelJPanel pane1 pane1 pane2 pane2 ContainerContainer con con ThreadThread threadthread null null DatagramPacketDatagramPacket sendPack sendPack receivePack receivePack DatagramSocketDatagramSocket sendSocket sendSocket receiveSocket receiveSocket privateprivate intint sendPort sendPort receivePort receivePort privateprivate bytebyte inBuf inBuf outBuf outBuf privateprivate MulticastSocketMulticastSocket multiSocketmultiSocket null null publicpublic Serverchat Serverchat throwsthrows UnknownHostExceptionUnknownHostException addListaddList newnew ArrayList ArrayList mainJframemainJframe newnew JFrame ServerJFrame Server chatchat boxes boxes concon mainJframe getContentPane mainJframe getContentPane showAreashowArea newnew JTextArea JTextArea showArea setEditable false showArea setEditable false showArea setLineWrap true showArea setLineWrap true lbl1lbl1 newnew JLabel ServerJLabel Server port port lbl2lbl2 newnew JLabel PersonalJLabel Personal port port sendPortTextsendPortText newnew JTextField JTextField sendPortText setColumns 5 sendPortText setColumns 5 receivePortTextreceivePortText newnew JTextField JTextField receivePortText setColumns 5 receivePortText setColumns 5 startBtnstartBtn newnew JButton Connect JButton Connect startBtn addActionListener this startBtn addActionListener this pane1pane1 newnew JPanel JPanel pane1 setLayout newpane1 setLayout new GridLayout 3 2 GridLayout 3 2 pane1 add lbl1 pane1 add lbl1 pane1 add receivePortText pane1 add receivePortText pane1 add lbl2 pane1 add lbl2 pane1 add sendPortText pane1 add sendPortText pane1 add startBtn pane1 add startBtn JSPaneJSPane newnew JScrollPane showArea JScrollPane showArea pane2pane2 newnew JPanel JPanel pane2 setLayout newpane2 setLayout new FlowLayout FlowLayout con add pane1 con add pane1 BorderLayout NORTH BorderLayout NORTH con add JSPane con add JSPane BorderLayout CENTER BorderLayout CENTER con add pane2 con add pane2 BorderLayout SOUTH BorderLayout SOUTH mainJframe setSize 600 600 mainJframe setSize 600 600 mainJframe setVisible true mainJframe setVisible true mainJframe setDefaultCloseOperation JFrame EXIT ON CLOSE mainJframe setDefaultCloseOperation JFrame EXIT ON CLOSE showArea append showArea append n n showArea append showArea append n n publicpublic staticstatic voidvoid main String main String args args trytry newnew Serverchat Serverchat catchcatch UnknownHostException UnknownHostException e e TODOTODO Auto generatedAuto generated catchcatch blockblock e printStackTrace e printStackTrace Override Override publicpublic voidvoid run run SendmessageSendmessage msg msg whilewhile true true trytry receiveSocket receive receivePack receiveSocket receive receivePack ByteArrayInputStreamByteArrayInputStream byteStreambyteStream newnew ByteArrayInputStream receivePack getData ByteArrayInputStream receivePack getData ObjectInputStreamObjectInputStream isis newnew ObjectInputStream newObjectInputStream new BufferedInputStream byteStream BufferedInputStream byteStream ObjectObject o o is readObject is readObject msgmsg Sendmessage Sendmessage o o is close is close InetAddressInetAddress testtest receivePack getAddress receivePack getAddress if addList contains test if addList contains test addList add test addList add test for InetAddressfor InetAddress iaddriaddr addList addList sendPacksendPack newnew DatagramPacket receivePack getData DatagramPacket receivePack getData receivePack getData length receivePack getData length iaddr sendPort iaddr sendPort sendSocket send sendPack sendSocket send sendPack showArea append msg getAddr showArea append msg getAddr n n msg getMsg msg getMsg n n catchcatch IOException IOException el el showArea append el getMessage n showArea append el getMessage n catchcatch ClassNotFoundException ClassNotFoundException e e TODOTODO Auto generatedAuto generated catchcatch blockblock e printStackTrace e printStackTrace Override Override publicpublic voidvoid actionPerformed ActionEventactionPerformed ActionEvent e e trytry ifif e getSource e getSource startBtn startBtn if sendPortText getText equals if sendPortText getText equals sendPortsendPort 10087 10087 else else sendPortsendPort Integer parseInt sendPortText getText Integer parseInt sendPortText getText if receivePortText getText equals if receivePortText getText equals receivePortreceivePort 10086 10086 else else receivePortreceivePort Integer parseInt receivePortText getText Integer parseInt receivePortText getText inBufinBuf newnew byte 16384 byte 16384 sendSocketsendSocket newnew DatagramSocket DatagramSocket receivePackreceivePack newnew DatagramPacket inBuf DatagramPacket inBuf inBuf length inBuf length receiveSocketreceiveSocket newnew DatagramSocket receivePort DatagramSocket receivePort threadthread newnew Thread this Thread this thread setPriority Thread MIN PRIORITY thread setPriority Thread MIN PRIORITY thread start thread start startBtn setEnabled false startBtn setEnabled false elseelse catchcatch SocketException SocketException e1 e1 showArea append SystemshowArea append System Error e1 getMessage n Error e1 getMessage n catchcatch IOException IOException e1 e1 showArea append SystemshowArea append System Error e1 getMessage n Error e1 getMessage n 3 3 UIchat javaUIchat java packagepackage chatboxes chatboxes importimport java awt BorderLayout java awt BorderLayout importimport java awt Container java awt Container importimport java awt FlowLayout java awt FlowLayout importimport java awt GridLayout java awt GridLayout importimport java awt event ActionEvent java awt event ActionEvent importimport java awt event ActionListener java awt event ActionListener importimport java io BufferedInputStream java io BufferedInputStream importimport java io BufferedOutputStream java io BufferedOutputStream importimport java io ByteArrayInputStream java io ByteArrayInputStream importimport java io ByteArrayOutputStream java io ByteArrayOutputStream importimport java io IOException java io IOException importimport java io ObjectInputStream java io ObjectInputStream importimport java io ObjectOutputStream java io ObjectOutputStream importimport DatagramPacket DatagramPacket importimport DatagramSocket DatagramSocket importimport InetAddress InetAddress importimport SocketException SocketException importimport UnknownHostException UnknownHostException importimport java text SimpleDateFormat java text SimpleDateFormat importimport java util Date java util Date importimport javax swing JButton javax swing JButton importimport javax swing JFrame javax swing JFrame importimport javax swing JLabel javax swing JLabel importimport javax swing JPanel javax swing JPanel importimport javax swing JScrollPane javax swing JScrollPane importimport javax swing JTextArea javax swing JTextArea importimport javax swing JTextField javax swing JTextField publicpublic classclass UIchatUIchat implementsimplements Runnable Runnable ActionListenerActionListener JTextAreaJTextArea showArea showArea JLabelJLabel lbl1 lbl1 lbl2 lbl2 lbl3 lbl3 lbl4 lbl4 JTextFieldJTextField msgText msgText sendPortText sendPortText receivePortText receivePortText IPAddressText IPAddressText name name JFrameJFrame mainJframe mainJframe JButtonJButton sendBtn sendBtn startBtn startBtn JScrollPaneJScrollPane JSPane JSPane JPanelJPanel pane1 pane1 pane2 pane2 ContainerContainer con con ThreadThread threadthread null null DatagramPacketDatagramPacket sendPack sendPack receivePack receivePack DatagramSocketDatagramSocket sendSocket sendSocket receiveSocket receiveSocket privateprivate StringString username username privateprivate InetAddressInetAddress sendIP sendIP privateprivate intint sendPort sendPort receivePort receivePort privateprivate bytebyte inBuf inBuf outBuf outBuf publicpublic UIchat UIchat mainJframemainJframe newnew JFrame ChatJFrame Chat Boxes Boxes concon mainJframe getContentPane mainJframe getContentPane showAreashowArea newnew JTextArea JTextArea showArea setEditable false showArea setEditable false showArea setLineWrap true showArea setLineWrap true lbl1lbl1 newnew JLabel PersonalJLabel Personal port port lbl2lbl2 newnew JLabel ServerJLabel Server port port lbl3lbl3 newnew JLabel ServerJLabel Server IP IP lbl4lbl4 newnew JLabel Nickname JLabel Nickname sendPortTextsendPortText newnew JTextField JTextField sendPortText setColumns 15 sendPortText setColumns 15 receivePortTextreceivePortText newnew JTextField JTextField receivePortText setColumns 15 receivePortText setColumns 15 namename newnew JTextField JTextField name setColumns 15 name setColumns 15 IPAddressTextIPAddressText newnew JTextField JTextField IPAddressText setColumns 15 IPAddressText setColumns 15 startBtnstartBtn newnew JButton Connect JButton Connect startBtn addActionListener this startBtn addActionListener this pane1pane1 newnew JPanel JPanel pane1 setLayout newpane1 setLayout new GridLayout 5 2 GridLayout 5 2 pane1 add lbl1 pane1 add lbl1 pane1 add receivePortText pane1 add receivePortText pane1 add lbl2 pane1 add lbl2 pane1 add sendPortText pane1 add sendPortText pane1 add lbl3 pane1 add lbl3 pane1 add IPAddressText pane1 add IPAddressText pane1 add lbl4 pane1 add lbl4 pane1 add name pane1 add name pane1 add startBtn pane1 add startBtn JSPaneJSPane newnew JScrollPane showArea JScrollPane showArea msgTextmsgText newnew JTextField JTextField msgText setColumns 40 msgText setColumns 40 msgText setEditable false msgText setEditable false msgText addActionListener this msgText addActionListener this sendBtnsendBtn newnew JButton Send JButton Send sendBtn setEnabled false sendBtn setEnabled false sendBtn addActionListener this sendBtn addActionListener this pane2pane2 newnew JPanel JPanel pane2 setLayout newpane2 setLayout new FlowLayout FlowLayout pane2 add msgText pane2 add msgText pane2 add sendBtn pane2 add sendBtn con add pane1 con add pane1 BorderLayout NORTH BorderLayout NORTH con add JSPane con add JSPane BorderLayout CENTER BorderLayout CENTER con add pane2 con add pane2 BorderLayout SOUTH BorderLayout SOUTH mainJframe setSize 700 mainJframe setSize 700 600 600 mainJframe setVisible true mainJframe setVisible true mainJframe setDefaultCloseOperation JFrame EXIT ON CLOSE mainJframe setDefaultCloseOperation JFrame EXIT ON CLOSE showArea append showArea append n n showArea append showArea append PleasePlease KeepKeep TheThe PortsPorts OfOf TheThe ChatChat BoxesBoxes UpUp WithWith TheThe PortsPorts OfOf ServerServer chatchat boxes n boxes n The The NicknameNickname IsIs TheThe IPIP OfOf YourYour PersonalPersonal ComputerComputer IP n IP n The The ServerServer IPIP ShouldShould NotNot BeBe Null n Null n showArea append showArea append n n publicpublic staticstatic voidvoid main String main String args args newnew UIchat UIchat Override Override publicpublic voidvoid actionPerformed ActionEventactionPerformed ActionEvent e e trytry ifif e getSource e getSource startBtn startBtn inBufinBuf newnew byte 16384 byte 16384 if sendPortText getText equals if sendPortText getText equals sendPortsendPort 10086 10086 else else sendPortsendPort Integer parseInt sendPortText getText Integer parseInt sendPortText getText if receivePortText getText equals if receivePortText getText equals receivePortreceivePort 10087 10087 else else receivePortreceivePort Integer parseInt receivePortText getText Integer parseInt receivePortText getText if name getText equals if name getText equals usernameusername InetAddress getLocalHost toString InetAddress getLocalHost toString else else usernameusername name getText name getText sendIPsendIP InetAddress getByName IPAddressText getText InetAddress getByName IPAddressText getText sendSocketsendSocket newnew DatagramSocket DatagramSocket receivePackreceivePack newnew DatagramPacket inBuf DatagramPacket inBuf inBuf length inBuf length receiveSocketreceiveSocket newnew DatagramSocket receivePort DatagramSocket receivePort threadthread newnew Thread this Thread this thread setPriority Thread MIN PRIORITY thread setPriority Thread MIN PRIORITY thread start thread start startBtn setEnabled false startBtn setEnabled false sendBtn setEnabled true sendBtn setEnabled true msgText setEditable true msgText setEditable true elseelse StringString msg1msg1 msgText getText msgText getText SimpleDateFormatSimpleDateFormat format newformat new SimpleDateFormat yyyy MM ddSimpleDateFormat yyyy MM dd HH mm ss HH mm ss StringString msg format format newmsg format format new Date Date msg1 msg1 SendmessageSendmessage messagemessage newnew Sendmessage InetAddress getLocalHost sendIP username mSendmessage InetAddress getLocalHost sendIP username m sg sg ByteArrayOutputStreamByteArrayOutputStream baosbaos newnew ByteArrayOutputStream ByteArrayOutputStream ObjectOutputStreamObjectOutputStream oosoos null null oosoos newnew ObjectOutputStream baos ObjectOutputStream baos oos writeObject message oos writeObject message oos flush oos flush outBufoutBuf baos toByteArray baos toByteArray sendPacksendPack newnew DatagramPacket outBuf DatagramPacket outBuf outBuf length outBuf length sendIP sendIP sendPort sendPort sendSocket send sendPack sendSocket send sendPack msgText setText null msgText setText

温馨提示

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

评论

0/150

提交评论