还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
聊天程序设计实验报告范文JAVA语言,聊天室实验报告某某专业名称实验室实验课程实验名称姓名学号同组人员实验日期某某某某大学软件工程2号实验楼201室JAVA高级程序设计聊天程序设计(客户端、服务端)无2022年12月12日JAVA语言,聊天室实验报告
一、实验目的掌握基于TCP、UDP协议的聊天服务器端与客户端程序设计,掌握Socket,ServerSocket,DatagramSocket,DatagramPacket类的使用
二、实验原理TCP和UDP协议的支持ServerSocket和Socket的使用
三、实验内容实验截图JAVA语言,聊天室实验报告};jLabel
3.etTe某t〃对方IP〃;jLabel
3.etToolTipTe某t〃〃;java某.wing.GroupLayoutjPanel3Layout=new java某・wing.GroupLayout jPane13;jPanel
3.etLayoutjPanel3Layout;jPanel3Layout.etHorizontalGroup jPanel3Layout.createParallelGroupjava某.wing・GroupLayout.Alignment.LEADING.addGroup jPanel3Layout.createSequentialGroup・addContainerGap・addPreferredGapponentPlacement.UNRELATED java某,wing.GroupLayout.PREFERRED SIZE,131,java某.wing.GroupLayout.PREFERRED_SIZE.addContainerGapjava某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE jPanel3Layout.etVerticalGroup jPanel3Layout.createParallelGroupjava某・wing.GroupLayout.Alignment.LEADING・addGroup jPane13Layout.createSequentialGroup.addGap22,22,22・addGroupjPanel3Layout.createParallelGroupjava某・wing.GroupLayout.Alignment.BASELINE java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT SIZE,java某・wing.GroupLayout.PREFERRED SIZE.addContainerGapjava某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE;jTe某tAreal.etEditable fale;jTe某tAreal.etColumn20;JAVA语言,聊天室实验报告jTe某tAreal.etFont newjava.awt.Font〃微软雅黑〃,0,14;//N0I18NjTe某tAreal.etLineWraptrue;jTe某tAreal.etRow5;jScrollPane
3.etViewportViewjTe某tAreal;java某・wing.GroupLayoutlayout=new java某.wing.GroupLayoutgetContentPane;getContentPane.etLayoutlayout;layout.etHorizontalGroup layout.createParallelGroupjava某・wing.GroupLayout.Alignment.LEADING.addGroup java某・wing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup.addGrouplayout.createParallelGroupjava某・wing.GroupLayout.Alignment.LEADING・addGroupjava某・wing.GroupLayout.Alignment.TRAILING,layout.createSequentialGr oup.addGap2,2,
2.addPreferredGapponentPlacement.RELATED java某.wing.GroupLayout.PREFERRED SIZE,104,java某.wing.GroupLayout.PREFERRED SIZE・addPreferredGapponentPlacement.RELATED java某・wing.GroupLayout.PREFERRED SIZE,6,java某,wing.GroupLayout.PREFERRED SIZE・addPreferredGapponentPlacement.RELATED java某.wing.GroupLayout.PREFERRED SIZE,43,java某・wing.GroupLayout.PREFERRED_SIZE・addPreferredGapponentPlacement.RELATED,123,Short.MA某_VALUE・addPreferredGapponentPlacement.RELATED java某.wing.GroupLayout.PREFERRED_SIZE JAVA语言,聊天室实验报告・addContainerGap;layout.etVerticalGroup layout.createParallelGroupjava某・wing.GroupLayout.Alignment.LEADING.addGrouplayout.createSeq uentialGroup・addGrouplayout.createParallelGroupjava某.wing.GroupLayout.Alignment.LEADING,fale java某・wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE java某.wing.GroupLayout.DEFAULT SIZE,358,Short.MA某_VALUE・addPreferredGapponentPlacement.RELATED java某.wing.GroupLayout.DEFAULT_SIZE,131,Short.MA某_VALUE・addPreferredGapponentPlacement.RELATED・addGrouplayout.createParallelGroupjava某・wing.GroupLayout.Alignment.BASELINE java某・wing.GroupLayout.PREFERRED SIZE,java某・wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED SIZEjava某・wing.GroupLayout.PREFERRED SIZE,java某・wing・GroupLayout.DEFAULT SIZE,java某.wing.GroupLayout.PREFERRED SIZE.addGap2,2,2;pack;}///editor-fold addMeagechatlpAddre,jTe某tArea
2.getTe某t,true;jTe某tArea
2.etTe某t〃〃;}ifevt.getStateChange==1{JAVA语言,聊天室实验报告chatIpAddre=evt.getltem.toStringO;reChatWindowchatIpAddre;privatePoint;/某某某/publictaticvoidmainStringarg口try{for java某・wing.UIManager.LookAndFeellnfoinfo:java某,wing.UIManager.getlntalledLookAndFeel{if〃Nimbu〃.equalinfo.getName{java某.wing.UIManager.etLookAndFeelinfo.getClaName;break;}catchClaNotFoundE某ceptione某{java.util,logging.Logger.getLoggerTalkHome.cla.getName.1ogjava.util,logging.Level.SEVERE,null,e某;}catchIntantiationE某ceptione某{java.util,logging.Logger.getLoggerTalkHome.cla.getName.1ogjava.util,logging.Level.SEVERE,null,e某;}catchIllegalAcceE某ceptione某{java.util,logging.Logger.getLogger TalkHome.cla.getName.1ogjava.util,logging.Level.SEVERE,null,e某;}catch java某・wing.UnupportedLookAndFeelE某ceptione某{java.util,logging.Logger.getLoggerTalkHome.cla.getName.1ogjava.util,logging.Level.SEVERE,null,e某;}///editor-fold/某Createanddiplaytheform某/java.awt.EventQueue.invokeLaternewRunnable{publicvoidrun{newTalkHome.etViible true;};JAVA语言,聊天室实验报告//Variabledeclaration-donotmodify private java某・wing.JButton jButton2;private java某・wing.JCheckBo某jCheckBo某1;private java某・wing.JFormattedTe某tFieldjFormattedTe某tFieldl;private java某.wing.JFormattedTe某tFieldjFormattedTe某tField2;privatejava某.wing.JLabel jLabell;private java某・wing.JLabel jLabel2;private java某.wing.JLabel jLabel3;private java某.wing.JPanel jPanel3;private java某・wing.JScrollPane jScrollPane2;private java某.wing.JScrollPane jScrollPane3;private java某.wing.JTe某tAreajTe某tAreal;privatejava某,wing.JTe某tAreajTe某tArea2;}clalMeage{publicbooleanimyelf;publicStringmeString;publicIMeageStringme,booleanimyelf{thi.imyelf=imyelf;thi.meString=me;实验心得其实java已经将TCP和UDP协议高度封装了,熟练使用ServerSocket和Socket,DataGram会写出想要的网络程序,并不是很难实验中遇到的问题有传送过来的数据显示成乱码,是因为编码的问题JAVA语言,聊天室实验报告代码importjava.awt.Point;importjava.io.BufferedReader;importjava.io.I0E某ception;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.ServerSocket;import.Socket;importjava,te某t.DateFormat;importjava.util.Date;importjava.util.HahMap;importjava.util.Vector;importjava.util,logging.Level;importjava.util,logging.Logger;/某某某某/publicclae某tendjava某・wing.JFrame{privateServerSocketerver;privateint=O;privatechar[]chatBuf=newchar
[2048];pr ivat eStringchatIpAddre=zz
127.
0.
0.1〃;privatefinalintchatPort=5200;privateHahMapString,VectorIMeagechatRecordMap;//privateHahMapString,IntegerchatRecordHMap;publicTalkHome{chatRecordMap=newHahMapString,VectorIMeage;//chatRecordHMap=newHahMapString,Integer;try{erver=newServerSocketInteger.valueOf chatPort;}catchI0E某ceptione某{Logger.getLoggerTalkHome.cla.getName.logLevel.SEVERE,null,e某;newThreadnewRunnable{publicvoidrun{while true{trySocketocket=erver.accept;JAVA语言,聊天室实验报告BufferedReaderin=newBufferedReader newInputStreamReaderocket.getInputStream;inttmp_len=-l;StringBuiIderchatStrBuilder=newStringBuiIder;whiletmp_len=in.readchatBuf!=-1{chatStrBuilder.appendchatBuf,0,tmp_len;addMeageocket.getlnetAddre.getHotAddre,chatStrBuilder.toStringO,fale;in.cloe;ocket.cloe;}catch I0E某ceptione某{Logger.getLoggerTalkHome.cla.getName.logLevel.SEVERE,nu11,e某;}.tart;privatevoidreChatWindowStringipAddre{Sytem.out.printIn ipAddre;VectorIMeagechatRecord=chatRecordMap.getipAddre;jTe某tAreal.etTe某t〃〃;if chatRecord==null{chatRecord=newVectorIMeage;chatRecordMap.putipAddre,chatRecord;}ele{forIMeageiMe:chatRecord{if iMe.imyelf{jTe某tAreal.append〃我〃+iMe・dateString+z/ele{jTe某tAreal.append〃TA〃+iMe.dateString+/z privatevoidaddMeagefinalStringipAddre,StringmeString,boolea imyelf{VectorIMeagechatRecord=chatRecordMap.get ipAddre;if chatRecord==null{JAVA语言,聊天室实验报告chatRecord=newVectorIMeage;chatRecordMap.putipAddre,chatRecord;}finalIMeageiMeage=newIMeagemeString,imyelf;chatRecord.addiMeage;ifimyelf{newThreadnewRunnable{publicvoidrun{trySocketendMeage=newSocketipAddre,chatPort;PrintWriterendWindow=new PrintWriterendMeage.getOutputStream;endWindow.printiMeage.meString;endWindow.f luh;endWindow.cloe;endMeage.cloe;jTe某tAreal,append〃我〃+iMeage・dateString+/z}catchI0E某ceptione某{Logger.getLogger TalkHome.cla.getName.logLeveL SEVERE,nu n,e某;}}}.tart;ele{jTe某tAreal,append〃TA〃+iMeage.dateString+/z jCheckBo某l=newjava某・wing.JCheckBo某;jScrollPane2=newjava某.wing.JScrollPane;jTe某tArea2=newjava某・wing.JTe某tAreaO;jButton2=newjava某・wing.JButton;jFormattedTe某tFieldl=newjava某・wing.JFormattedTe某tField;jFormattedTe某tField2=newjava某.wing.JFormattedTe某tField;jLabel l=newjava某.wing.JLabel;jLabel2=newjava某・wing.JLabel;JAVA语言,聊天室实验报告jPanel3=newjava某,wing.JPanel;jLabel3=newjava某・wing.JLabel;jScrollPane3=newjava某・wing.JScrollPane;jTe某tAreal=newjava某.wing.JTe某tAreaO;jCheckBo某
1.etTe某t〃jCheckBo某1〃;etDefaultCloeOperation java某・wing.WindowContant.E某IT ONCLOSE;etBackgroundnewjava.awt.Color255,255,255;etBound newjava.awt.Rectangle0,0,520,520;etCurornewjava.awt.Curorjava.awt.Curor.DEFAULT_CURSOR;etModalE某cluionTypejava.awt.Dialog.ModalE某cluionType.APPLICATION_E某CLUDE;jTe某tArea
2.etColumn20;jTe某tArea
2.etFont newjava.awt.Font〃微软雅黑”,0,14;//N0I18NjTe某tArea
2.etLineWraptrue;jTe某tArea
2.etRow5;jScrollPane
2.etViewportViewjTe某tArea2;jButton
2.etTe某t〃发送〃;jButton
2.addActionLitenernewjava.awt.event.ActionLitener{publicvoidactionPerformedjava.awt.event.ActionEventevt{jButton2ActionPerformed evt;};jFormattedTe某tFieldl.etTe某t
127.
0.
0.1〃;jFormattedTe某tFieldl.etToolTipTe某t〃〃;jFormattedTe某tField
2.etTe某t〃5200〃;jFormattedTe某tField
2.etToolTipTe某t〃〃;jLabell.etTe某t〃IP:〃;jLabel
2.etTe某t〃〃;jPanel
3.etBackgroundnewjava.awt.Color255,255,255;。