




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXXXXX 大学 专业名称软件工程 实 验 室2 号实验楼 201 室 实验课程JAVA 高级程序设计 实验名称聊天程序设计 客户端 服务 端 姓 名 学 号 同组人员无 实验日期2013 年 12 月 12 日 1 一 实验目的 掌握基于 TCP UDP 协议的聊天服务器端与客户端程序设计 掌握 Socket ServerSocket DatagramSocket DatagramPacket 类的使用 二 实验原理二 实验原理 TCP 和 UDP 协议的支持 ServerSocket 和 Socket 的使用 三 实验内容三 实验内容 实验截图实验截图 2 代码代码 import java awt Point import java io BufferedReader import java io IOException import java io InputStreamReader import java io PrintWriter import ServerSocket import Socket import java text DateFormat import java util Date import java util HashMap import java util Vector import java util logging Level import java util logging Logger author Hsidar public class TalkHome extends javax swing JFrame private ServerSocket server private int talkHigh 0 private char chatBuf new char 2048 private String chatIpAddress 127 0 0 1 private final int chatPort 5200 private HashMap String Vector chatRecordsMap private HashMap chatRecordHMap public TalkHome initComponents chatRecordsMap new HashMap String Vector chatRecordHMap new HashMap try server new ServerSocket Integer valueOf chatPort catch IOException ex Logger getLogger TalkHome class getName log Level SEVERE null ex new Thread new Runnable Override public void run while true try Socket socket server accept 3 BufferedReader sin new BufferedReader new InputStreamReader socket getInputStream int tmp len 1 StringBuilder chatStrBuilder new StringBuilder while tmp len sin read chatBuf 1 chatStrBuilder append chatBuf 0 tmp len addMessage socket getInetAddress getHostAddress chatStrBuilder toString false sin close socket close catch IOException ex Logger getLogger TalkHome class getName log Level SEVERE null ex start private void reChatWindow String ipAddress System out println ipAddress Vector chatRecords chatRecordsMap get ipAddress jTextArea1 setText if chatRecords null chatRecords new Vector chatRecordsMap put ipAddress chatRecords else for IMessage iMess chatRecords if iMess ismyself jTextArea1 append 我 iMess dateString iMess timeString n iMess messString n n else jTextArea1 append TA iMess dateString iMess timeString n iMess messString n n private void addMessage final String ipAddress String messString boolean ismyself Vector chatRecords chatRecordsMap get ipAddress if chatRecords null 4 chatRecords new Vector chatRecordsMap put ipAddress chatRecords final IMessage iMessage new IMessage messString ismyself chatRecords add iMessage if ismyself new Thread new Runnable Override public void run try Socket sendMessage new Socket ipAddress chatPort PrintWriter sendWindow new PrintWriter sendMessage getOutputStream sendWindow print iMessage messString sendWindow flush sendWindow close sendMessage close jTextArea1 append 我 iMessage dateString iMessage timeString n iMessage messString n n catch IOException ex Logger getLogger TalkHome class getName log Level SEVERE null ex start else jTextArea1 append TA iMessage dateString iMessage timeString n iMessage messString n n SuppressWarnings unchecked private void initComponents jCheckBox1 new javax swing JCheckBox jScrollPane2 new javax swing JScrollPane jTextArea2 new javax swing JTextArea jButton2 new javax swing JButton jFormattedTextField1 new javax swing JFormattedTextField jFormattedTextField2 new javax swing JFormattedTextField jLabel1 new javax swing JLabel jLabel2 new javax swing JLabel 5 jPanel3 new javax swing JPanel jComboBox1 new javax swing JComboBox jLabel3 new javax swing JLabel jScrollPane3 new javax swing JScrollPane jTextArea1 new javax swing JTextArea jCheckBox1 setText jCheckBox1 setDefaultCloseOperation javax swing WindowConstants EXIT ON CLOSE setBackground new java awt Color 255 255 255 setBounds new java awt Rectangle 0 0 520 520 setCursor new java awt Cursor java awt Cursor DEFAULT CURSOR setModalExclusionType java awt Dialog ModalExclusionType APPLICATION EXCLUD E jTextArea2 setColumns 20 jTextArea2 setFont new java awt Font 微软雅黑 0 14 NOI18N jTextArea2 setLineWrap true jTextArea2 setRows 5 jScrollPane2 setViewportView jTextArea2 jButton2 setText 发送 jButton2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton2ActionPerformed evt jFormattedTextField1 setText 127 0 0 1 jFormattedTextField1 setToolTipText jFormattedTextField2 setText 5200 jFormattedTextField2 setToolTipText jLabel1 setText IP jLabel2 setText jPanel3 setBackground new java awt Color 255 255 255 jComboBox1 setModel new javax swing DefaultComboBoxModel new String 127 0 0 1 172 16 202 19 172 18 254 216 jComboBox1 addItemListener new java awt event ItemListener 6 public void itemStateChanged java awt event ItemEvent evt jComboBox1ItemStateChanged evt jLabel3 setText 对方IP jLabel3 setToolTipText javax swing GroupLayout jPanel3Layout new javax swing GroupLayout jPanel3 jPanel3 setLayout jPanel3Layout jPanel3Layout setHorizontalGroup jPanel3Layout createParallelGroup javax swing GroupLayout Alignment LEADING addGroup jPanel3Layout createSequentialGroup addContainerGap addComponent jLabel3 addPreferredGap javax swing LayoutStyle ComponentPlacement UNRELATED addComponent jComboBox1 javax swing GroupLayout PREFERRED SIZE 131 javax swing GroupLayout PREFERRED SIZE addContainerGap javax swing GroupLayout DEFAULT SIZE Short MAX VALUE jPanel3Layout setVerticalGroup jPanel3Layout createParallelGroup javax swing GroupLayout Alignment LEADING addGroup jPanel3Layout createSequentialGroup addGap 22 22 22 addGroup jPanel3Layout createParallelGroup javax swing GroupLayout Alignme nt BASELINE addComponent jComboBox1 javax swing GroupLayout PREFERRED SIZE javax swing GroupLayout DEFAULT SIZE javax swing GroupLayout PREFERRED SIZE addComponent jLabel3 addContainerGap javax swing GroupLayout DEFAULT SIZE Short MAX VALUE jTextArea1 setEditable false jTextArea1 setColumns 20 7 jTextArea1 setFont new java awt Font 微软雅黑 0 14 NOI18N jTextArea1 setLineWrap true jTextArea1 setRows 5 jScrollPane3 setViewportView jTextArea1 javax swing GroupLayout layout new javax swing GroupLayout getContentPane getContentPane setLayout layout layout setHorizontalGroup layout createParallelGroup javax swing GroupLayout Alignment LEADING addGroup javax swing GroupLayout Alignment TRAILING layout createSequentialGroup addGroup layout createParallelGroup javax swing GroupLayout Alignment LEAD ING addGroup javax swing GroupLayout Alignment TRAILING layout createSequentialGroup addGap 2 2 2 addComponent jLabel1 addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addComponent jFormattedTextField1 javax swing GroupLayout PREFERRED SIZE 104 javax swing GroupLayout PREFERRED SIZE addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addComponent jLabel2 javax swing GroupLayout PREFERRED SIZE 6 javax swing GroupLayout PREFERRED SIZE addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addComponent jFormattedTextField2 javax swing GroupLayout PREFERRED SIZE 43 javax swing GroupLayout PREFERRED SIZE addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED 123 Short MAX VALUE addComponent jButton2 addComponent jScrollPane2 addComponent jScrollPane3 addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addComponent jPanel3 8 javax swing GroupLayout PREFERRED SIZE javax swing GroupLayout DEFAULT SIZE javax swing GroupLayout PREFERRED SIZE addContainerGap layout setVerticalGroup layout createParallelGroup javax swing GroupLayout Alignment LEADING addGroup layout createSequentialGroup addGroup layout createParallelGroup javax swing GroupLayout Alignment LEAD ING false addComponent jPanel3 javax swing GroupLayout DEFAULT SIZE javax swing GroupLayout DEFAULT SIZE Short MAX VALUE addComponent jScrollPane3 javax swing GroupLayout DEFAULT SIZE 358 Short MAX VALUE addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addComponent jScrollPane2 javax swing GroupLayout DEFAULT SIZE 131 Short MAX VALUE addPreferredGap javax swing LayoutStyle ComponentPlacement RELATED addGroup layout createParallelGroup javax swing GroupLayout Alignment BASE LINE addComponent jButton2 addComponent jFormattedTextField1 javax swing GroupLayout PREFERRED SIZE javax swing GroupLayout DEFAULT SIZE javax swing GroupLayout PREFERRED SIZE addComponent jFormattedTextField2 javax swing GroupLayout PREFERRED SIZE javax swing GroupLayout DEFAULT SIZE javax swing GroupLayout PREFERRED SIZE addComponent jLabel2 addComponent jLabel1 addGap 2 2 2 pack private void jButton2ActionPerformed java awt event ActionEvent evt 9 addMessage chatIpAddress jTextArea2 getText true jTextArea2 setText private void jComboBox1ItemStateChanged java awt event ItemEvent evt if evt getStateChange 1 chatIpAddress evt getItem toString reChatWindow chatIpAddress private Point jPanel1 pressed param args the command line arguments public static void main String args try for javax swing UIManager LookAndFeelInfo info javax swing UIManager getInstalledLookAndFeels if Nimbus equals info getName javax swing UIManager setLookAndFeel info getClassName break catch ClassNotFoundException ex java util logging Logger getLogger TalkHome class getName log java util logging Level SEVERE null ex catch InstantiationException ex java util logging Logger getLogger TalkHome class getName log java util logging Level SEVERE null ex catch IllegalAccessException ex java util logging Logger getLogger TalkHome class getName log java util logging Level SEVERE null ex catch javax swing UnsupportedLookAndFeelException ex java util logging Logger getLogger TalkHome class getName log java util logging Level SEVERE null ex 10 Create and display the form java awt EventQueue invokeLater new Runnable p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工阶段成本控制关键点-洞察及研究
- 城乡人口流动-洞察及研究
- 涟源营销方案
- 情境模拟对学习动机的影响分析-洞察及研究
- 激光脱毛在治疗多毛症中的疗效分析-洞察及研究
- 威海安全员a证考试题库及答案解析
- 数字图书馆中的互动式学习平台开发-洞察及研究
- 沿滩区营销方案
- 营销方案酒楼
- 安全答题100题测试题及答案解析
- (2025秋新版)外研版八年级英语上册全册教案
- GB/T 45870.1-2025弹簧测量和试验参数第1部分:冷成形圆柱螺旋压缩弹簧
- 数据备份课件
- 银行集团管理办法
- 人行国内证管理办法
- 电厂钢结构安装方案(3篇)
- 部编版六年级下册语文小升初《词语积累与运用》专项检测卷 含答案
- 残运会应急预案管理办法
- T/SFABA 2-2016食品安全团体标准食品配料焙烤食品预拌粉
- 村集体合作入股协议书
- A-Level化学(A2)2024-2025年有机合成与分析化学深度学习试题
评论
0/150
提交评论