聊天程序设计实验报告范文.docx

上传人:b****4 文档编号:11723440 上传时间:2023-03-31 格式:DOCX 页数:11 大小:16.65KB
下载 相关 举报
聊天程序设计实验报告范文.docx_第1页
第1页 / 共11页
聊天程序设计实验报告范文.docx_第2页
第2页 / 共11页
聊天程序设计实验报告范文.docx_第3页
第3页 / 共11页
聊天程序设计实验报告范文.docx_第4页
第4页 / 共11页
聊天程序设计实验报告范文.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

聊天程序设计实验报告范文.docx

《聊天程序设计实验报告范文.docx》由会员分享,可在线阅读,更多相关《聊天程序设计实验报告范文.docx(11页珍藏版)》请在冰豆网上搜索。

聊天程序设计实验报告范文.docx

聊天程序设计实验报告范文

聊天程序设计实验报告范文

JAVA语言,聊天室实验报告

某某

专业名称

实验室

实验课程

实验名称

姓名学号同组人员

实验日期某某某某大学软件工程2号实验楼201室JAVA高级程序设计聊天程序设计(客户端、服务端)无2022年12月12日

JAVA语言,聊天室实验报告

一、实验目的

掌握基于TCP、UDP协议的聊天服务器端与客户端程序设计,掌握Socket,ServerSocket,

DatagramSocket,DatagramPacket类的使用。

二、实验原理

TCP和UDP协议的支持。

ServerSocket和Socket的使用。

三、实验内容

实验截图

JAVA语言,聊天室实验报告

代码

importjava.awt.Point;

importjava.io.BufferedReader;

importjava.io.IOE某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=0;

privatechar[]chatBuf=newchar[2048];

privateStringchatIpAddre="127.0.0.1";

privatefinalintchatPort=5200;

privateHahMap>chatRecordMap;

//privateHahMapchatRecordHMap;

publicTalkHome(){

chatRecordMap=newHahMap>();

//chatRecordHMap=newHahMap();

try{

erver=newServerSocket(Integer.valueOf(chatPort));

}catch(IOE某ceptione某){

Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE,

null,e某);

}

newThread(newRunnable(){

publicvoidrun(){

while(true){

try{

Socketocket=erver.accept();

JAVA语言,聊天室实验报告

BufferedReaderin=newBufferedReader(new

InputStreamReader(ocket.getInputStream()));

inttmp_len=-1;

StringBuilderchatStrBuilder=newStringBuilder();

while((tmp_len=in.read(chatBuf))!

=-1){

chatStrBuilder.append(chatBuf,0,tmp_len);

}

addMeage(ocket.getInetAddre().getHotAddre(),

chatStrBuilder.toString(),fale);

in.cloe();

ocket.cloe();

}catch(IOE某ceptione某){

Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE,null,e某);

}

}

}

}).tart();

}

privatevoidreChatWindow(StringipAddre){

Sytem.out.println(ipAddre);

VectorchatRecord=chatRecordMap.get(ipAddre);

jTe某tArea1.etTe某t("");

if(chatRecord==null){

chatRecord=newVector();

chatRecordMap.put(ipAddre,chatRecord);

}

ele{

for(IMeageiMe:

chatRecord){

if(iMe.imyelf){

jTe某tArea1.append("我"+iMe.dateString+"

}

ele{

jTe某tArea1.append("TA"+iMe.dateString+"

}

}

}

}

privatevoidaddMeage(finalStringipAddre,StringmeString,boolean

imyelf){

VectorchatRecord=chatRecordMap.get(ipAddre);

if(chatRecord==null){

JAVA语言,聊天室实验报告

chatRecord=newVector();

chatRecordMap.put(ipAddre,chatRecord);

}

finalIMeageiMeage=newIMeage(meString,imyelf);

chatRecord.add(iMeage);

if(imyelf){

newThread(newRunnable(){

publicvoidrun(){

try{

SocketendMeage=newSocket(ipAddre,chatPort);

PrintWriterendWindow=new

PrintWriter(endMeage.getOutputStream());

endWindow.print(iMeage.meString);

endWindow.fluh();

endWindow.cloe();

endMeage.cloe();

jTe某tArea1.append("我"+iMeage.dateString+"

}catch(IOE某ceptione某){

Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE,null,e某);

}

}

}).tart();

}

ele{

jTe某tArea1.append("TA"+iMeage.dateString+"

}

}

jCheckBo某1=newjava某.wing.JCheckBo某();

jScrollPane2=newjava某.wing.JScrollPane();

jTe某tArea2=newjava某.wing.JTe某tArea();

jButton2=newjava某.wing.JButton();

jFormattedTe某tField1=newjava某.wing.JFormattedTe某tField();

jFormattedTe某tField2=newjava某.wing.JFormattedTe某tField();

jLabel1=newjava某.wing.JLabel();

jLabel2=newjava某.wing.JLabel();

JAVA语言,聊天室实验报告

jPanel3=newjava某.wing.JPanel();

jLabel3=newjava某.wing.JLabel();

jScrollPane3=newjava某.wing.JScrollPane();

jTe某tArea1=newjava某.wing.JTe某tArea();

jCheckBo某1.etTe某t("jCheckBo某1");

etDefaultCloeOperation(java某.wing.WindowContant.E某IT_ON_CLOSE);etBackground(newjava.awt.Color(255,255,255));

etBound(newjava.awt.Rectangle(0,0,520,520));

etCuror(newjava.awt.Curor(java.awt.Curor.DEFAULT_CURSOR));

etModalE某cluionType(java.awt.Dialog.ModalE某cluionType.APPLICATION_E某CLUDE);

jTe某tArea2.etColumn(20);

jTe某tArea2.etFont(newjava.awt.Font("微软雅黑",0,14));//NOI18NjTe某tArea2.etLineWrap(true);

jTe某tArea2.etRow(5);

jScrollPane2.etViewportView(jTe某tArea2);

jButton2.etTe某t("发送");

jButton2.addActionLitener(newjava.awt.event.ActionLitener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton2ActionPerformed(evt);

}

});

jFormattedTe某tField1.etTe某t("127.0.0.1");

jFormattedTe某tField1.etToolTipTe某t("");

jFormattedTe某tField2.etTe某t("5200");

jFormattedTe某tField2.etToolTipTe某t("");

jLabel1.etTe某t("IP:

");

jLabel2.etTe某t(":

");

jPanel3.etBackground(newjava.awt.Color(255,255,255));

JAVA语言,聊天室实验报告

}

});

jLabel3.etTe某t("对方IP:

");

jLabel3.etToolTipTe某t("");

java某.wing.GroupLayoutjPanel3Layout=new

java某.wing.GroupLayout(jPanel3);

jPanel3.etLayout(jPanel3Layout);

jPanel3Layout.etHorizontalGroup(

jPanel3Layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addContainerGap()

.addPreferredGap(ponentPlacement.UNRELATED)

java某.wing.GroupLayout.PREFERRED_SIZE,131,

java某.wing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE))

);

jPanel3Layout.etVerticalGroup(

jPanel3Layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addGap(22,22,22)

.addGroup(jPanel3Layout.createParallelGroup(java某.wing.GroupLayout.Alignment.BASELINE)

java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE))

);

jTe某tArea1.etEditable(fale);

jTe某tArea1.etColumn(20);

JAVA语言,聊天室实验报告

jTe某tArea1.etFont(newjava.awt.Font("微软雅黑",0,14));//NOI18NjTe某tArea1.etLineWrap(true);

jTe某tArea1.etRow(5);

jScrollPane3.etViewportView(jTe某tArea1);

java某.wing.GroupLayoutlayout=new

java某.wing.GroupLayout(getContentPane());

getContentPane().etLayout(layout);

layout.etHorizontalGroup(

layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(java某.wing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING)

.addGroup(java某.wing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()

.addGap(2,2,2)

.addPreferredGap(ponentPlacement.RELATED)

java某.wing.GroupLayout.PREFERRED_SIZE,104,

java某.wing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ponentPlacement.RELATED)

java某.wing.GroupLayout.PREFERRED_SIZE,6,

java某.wing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ponentPlacement.RELATED)

java某.wing.GroupLayout.PREFERRED_SIZE,43,

java某.wing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ponentPlacement.RELATED,123,Short.MA某_VALUE)

.addPreferredGap(ponentPlacement.RELATED)

java某.wing.GroupLayout.PREFERRED_SIZE)

JAVA语言,聊天室实验报告

.addContainerGap())

);

layout.etVerticalGroup(

layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(java某.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))

.addPreferredGap(ponentPlacement.RELATED)

java某.wing.GroupLayout.DEFAULT_SIZE,131,Short.MA某_VALUE)

.addPreferredGap(ponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.BASELINE)

java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE)

java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE)

.addGap(2,2,2))

);

pack();

}//

addMeage(chatIpAddre,jTe某tArea2.getTe某t(),true);

jTe某tArea2.etTe某t("");

}

if(evt.getStateChange()==1){

JAVA语言,聊天室实验报告

chatIpAddre=evt.getItem().toString();

reChatWindow(chatIpAddre);

}

}

privatePoint;

/某某

某/

publictaticvoidmain(Stringarg[]){

try{

for(java某.wing.UIManager.LookAndFeelInfoinfo:

java某.wing.UIManager.getIntalledLookAndFeel()){

if("Nimbu".equal(info.getName())){

java某.wing.UIManager.etLookAndFeel(info.getClaName());

break;

}

}

}catch(ClaNotFoundE某ceptione某){

java.util.logging.Logger.getLogger(TalkHome.cla.getName()).log(java.util.logging.Level.SEVERE,null,e某);

}catch(IntantiationE某ceptione某){

java.util.logging.Logger.getLogger(TalkHome.cla.getName()).log(java.util.logging.Level.SEVERE,null,e某);

}catch(IllegalAcceE某ceptione某){

java.util.logging.Logger.getLogger(TalkHome.cla.getName()).log(java.util.logging.Level.SEVERE,null,e某);

}catch(java某.wing.UnupportedLookAndFeelE某ceptione某){

java.util.logging.Logger.getLogger(TalkHome.cla.getName()).log(java.util.logging.Level.SEVERE,null,e某);

}

//

/某Createanddiplaytheform某/

java.awt.EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

newTalkHome().etViible(true);

}

});

JAVA语言,聊天室实验报告

}

//Variabledeclaration-donotmodify

privatejava某.wing.JButtonjButton2;

privatejava某.wing.JCheckBo某jCheckBo某1;

privatejava某.wing.JFormattedTe某tFieldjFormattedTe某tField1;

privatejava某.wing.JFormattedTe某tFieldjFormattedTe某tField2;

privatejava某.wing.JLabeljLabel1;

privatejava某.wing.JLabeljLabel2;

privatejava某.wing.JLabeljLabel3;

privatejava某.wing.JPaneljPanel3;

privatejava某.wing.JScrollPanejScrollPane2;

privatejava某.wing.JScrollPanejScrollPane3;

privatejava某.wing.JTe某tAreajTe某tArea1;

privatejava某.wing.JTe某tAreajTe某tArea2;

}

claIMeage{

publicbooleanimyelf;

publicStringmeString;

publicIMeage(Stringme,booleanimyelf){

thi.imyelf=imyelf;

thi.meString=me;

}

四、实验心得

其实java已经将TCP和UDP协议高度封装了,熟练使用ServerSocket和Socket,DataGram会写出想要的网络程序,并不是很难。

实验中遇到的问题有传送过来的数据显示成乱码,是因为编码的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1