JAVA基于PTP的局域网内的聊天共享文件的课程设计源代码Word文档下载推荐.docx
- 文档编号:16544359
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:17.87KB
JAVA基于PTP的局域网内的聊天共享文件的课程设计源代码Word文档下载推荐.docx
《JAVA基于PTP的局域网内的聊天共享文件的课程设计源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVA基于PTP的局域网内的聊天共享文件的课程设计源代码Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
,newLabel("
当前聊天者列表:
"
;
newLabel(;
South"
newLabel("
双击一个人的昵称可以进行交谈"
classBPanelextendsPanel
TextFieldmsg_txt;
Buttonbutton1,button2,button3,button4,button5;
//button1button2用做publicBPanel(
msg_txt=newTextField(30;
button1=newButton("
发送"
button2=newButton("
刷新谈话区"
button3=newButton("
刷新在线用户"
setLayout(newFlowLayout(FlowLayout.LEFT;
add(newLabel("
发送的话"
add(msg_txt;
add(button1;
add(button2;
add(button3;
classMyWindowextendsFrame
Labelperson;
APanelpa;
BPanelpb;
publicMyWindow(
super("
.."
person=newLabel("
聊天记录:
pa=newAPanel(;
pb=newBPanel(;
setBackground(newColor(206,113,150;
setSize(550,450;
setLocation(450,100;
setResizable(false;
person;
pa;
pb;
addWindowListener(newWindowAdapter({
publicvoidwindowClosing(WindowEvente{
System.exit(1;
};
setVisible(true;
PPfriend.java
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.awt.event.*;
importjava.io.*;
import.*;
importjava.util.*;
importjavax.swing.*;
publicclassPPfriendextendsJFrameimplementsActionListener{publicStringmyAddress;
publicStringmyIP;
Buttonbutton1,button2,button3;
Vectorclients=newVector(;
publicMyWindowmyw;
QQDialogqq;
StringsendIp;
BroadcastThreadbroadcast;
receiveSMGrm;
Stringfilepath=null;
Stringsavepath=null;
RecevieToOnerecevietoone;
publicstaticvoidmain(String[]str{
newPPfriend(;
publicPPfriend({
ppInit(;
}catch(Exceptione{
e.printStackTrace(;
serverListen(;
voidppInit({
myw=newMyWindow(;
qq=newQQDialog("
QQ"
qq.setVisible(false;
qq.refile.setEnabled(false;
recevietoone=newRecevieToOne(this;
recevietoone.start(;
myw.pa.apanel2.list.addActionListener(this;
myw.pb.button1.addActionListener(this;
myw.pb.button2.addActionListener(this;
myw.pb.button3.addActionListener(this;
qq.fileBut.addActionListener(this;
qq.sendBut.addActionListener(this;
qq.refile.addActionListener(this;
rm=newreceiveSMG(this;
rm.start(;
publicvoidserverListen({
broadcast=newBroadcastThread(;
broadcast.start(;
publicvoidactionPerformed(ActionEvente{
if(e.getSource(==myw.pb.button1{
myw.pa.chat_txt.append(myIP+"
:
"
+myw.pb.msg_txt.getText(+"
\n"
for(inti=0;
i<
clients.size(;
i++{
if(!
clients.elementAt(i.toString(.equals(myIP
Stringmessage=myIP+"
+myw.pb.msg_txt.getText(.toString(;
InetAddressia=InetAddress.getByName(clients.elementAt(i.toString(;
byte[]bs=message.getBytes(;
DatagramPacketsendmessage=newDatagramPacket(bs,bs.length,ia,8005;
DatagramSocketsocket=newDatagramSocket(;
socket.send(sendmessage;
socket.close(;
qq.chat_txt.setText(null;
qq.chat_txt.requestFocus(;
}catch(Exceptionee{
ee.printStackTrace(;
myw.pb.msg_txt.setText(null;
myw.pb.msg_txt.requestFocus(;
elseif(e.getSource(==myw.pb.button2{
myw.pa.chat_txt.setText("
elseif(e.getSource(==myw.pb.button3{
broadcast.yield(;
broadcast=null;
clients.clear(;
myw.pa.apanel2.list.removeAll(;
myw.pa.apanel2.list.repaint(;
elseif(e.getSource(==myw.pa.apanel2.list{
qq.setVisible(true;
sendIp=myw.pa.apanel2.list.getSelectedItem(.toString(;
elseif(e.getSource(==qq.fileBut{//发送文件JFileChooserchooser=newJFileChooser(;
intreturnVal=chooser.showDialog(null,"
send"
if(returnVal==chooser.APPROVE_OPTION
filepath=chooser.getSelectedFile(.getAbsolutePath(;
SendFilemysf=newSendFile(this,filepath;
mysf.start(;
elseif(e.getSource(==qq.refile{
JFileChoosermychooser=newJFileChooser(;
intmyreturnVal=mychooser.showDialog(null,"
save"
if(myreturnVal==mychooser.APPROVE_OPTION{
savepath=mychooser.getSelectedFile(.getAbsolutePath(;
Receviemyrecevie=newRecevie(this,savepath;
myrecevie.start(;
elseif(e.getSource(==qq.sendBut{
+qq.chat_txt.getText(.toString(;
myw.pa.chat_txt.append(message+"
InetAddressia=InetAddress.getByName(sendIp.toString(;
DatagramSocketsocket1=newDatagramSocket(;
socket1.send(sendmessage;
socket1.close(;
classBroadcastThreadextendsThread{
publicvoidgetmyAddress({
InetAddressaddr=InetAddress.getLocalHost(;
myAddress=addr.getAddress(.toString(;
//获得本机名称
myIP=addr.getHostAddress(;
//获得本机IP
}catch(Exceptione1{
e1.printStackTrace(;
publicvoidrun({
MulticastSocketmulticastSocket=newMulticastSocket(7777;
InetAddressinetAddress=InetAddress.getByName("
230.0.0.1"
multicastSocket.joinGroup(inetAddress;
byte[]receiveIp=newbyte[12];
getmyAddress(;
while(true{
DatagramPacketsendIp=newDatagramPacket(myAddress.getBytes(,myAddress.length(,inetAddress,7777;
multicastSocket.send(sendIp;
DatagramPacketdatagramPacket=newDatagramPacket(receiveIp,receiveIp.length,inetAddress,7777;
multicastSocket.receive(datagramPacket;
Stringip=datagramPacket.getAddress(.getHostAddress(.toString(;
if((!
clients.contains(ip
clients.add(ip;
myrepaint(;
sleep(1000;
catch(Exceptionexception
exception.printStackTrace(;
voidmyrepaint({
for(inti=0;
i++
myw.pa.apanel2.list.add(clients.elementAt(i.toString(;
QQDialog.java
publicclassQQDialogextendsJFrame{
ButtonsendBut,fileBut,refile;
QQDialog(Stringname{
super(name;
Labeltitle=newLabel("
密函:
chat_txt=newTextArea(20,20;
chat_txt.setEditable(true;
sendBut=newButton("
fileBut=newButton("
发送文件"
refile=newButton("
接受文件"
Panelp=newPanel(newFlowLayout(FlowLayout.LEFT;
p.add(sendBut;
p.add(fileBut;
p.add(refile;
title;
p;
setSize(400,200;
setLocation(400,400;
e.getWindow(.dispose(;
receiveSMG.java
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.InputStreamReader;
import.DatagramPacket;
import.DatagramSocket;
import.ServerSocket;
import.Socket;
publicclassreceiveSMGextendsThread{
publicStringmsg;
PPfriendfriend;
receiveSMG(PPfriendfriend{
this.friend=friend;
Filemusic=newFile("
remsg.wav"
AudioClipac=Applet.newAudioClip(music.toURL(;
while(true{
byte[]inbuf=newbyte[2048];
//默认的数据缓冲大小
DatagramSocketsocket=newDatagramSocket(8005;
DatagramPacketpacket=newDatagramPacket(inbuf,inbuf.length;
socket.receive(packet;
//接受数据
msg=newString(packet.getData(;
if(msg!
=null
friend.myw.pa.chat_txt.append(msg;
friend.myw.pa.chat_txt.append("
ac.play(;
}catch(Exceptioneee{
eee.printStackTrace(;
Recevie.java
importjavax.swing.JFileChooser;
importjavax.swing.JOptionPane;
publicclassRecevieextendsThread{
privateStringfilepath=null;
PPfriendfriend=null;
InetAddressaddr;
publicRecevie(PPfriendfriend,Stringsavepath{
this.friend=friend;
filepath=savepath;
publicvoiddoclient(throwsException{
intlength;
Filefile=newFile(filepath;
FileOutputStreamoutputb=newFileOutputStream(file;
if(friend.recevietoone.getip!
addr=InetAddress.getByName(friend.recevietoone.getip;
Socketsocket=newSocket(addr,8888;
//System.out.println("
socket="
+socket;
PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(,true;
InputStreamnetIn=socket.getInputStream(;
InputStreamin=newDataInputStream(newBufferedInputStream(netIn;
OutputStreamnetOut=socket.getOutputStream(;
OutputStreamdoc=newDataOutputStream(newBufferedOutputStream(netOut;
byte[]buf=newbyte[2048];
length=in.read(buf;
while(length!
=(-1{//是否读完所有数据
outputb.write(buf,0,length;
//将数据写往文件
//继续从网络中读取文件
in.close(;
outputb.close(;
}finally{
JOptionPane.showMessageDialog(null,"
文件传输成功!
null,JOptionPane.OK_OPTION;
try{
this.doclient(;
}catch(Exceptione{
RecevieToOne.javapackagehf;
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.io.File;
import.DatagramPacket;
import.DatagramSocket;
import.InetAddress;
publicclassRecevieToOneextendsThread{DatagramSocketdatasocket;
publicStringgetip=null;
PPfriendfriend;
publicRecevieToOne(PPfriendfriend{super("
kk"
this.friend=friend;
}publicvoidrun({try{byte[]inbuf=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 基于 PTP 局域网 聊天 共享 文件 课程设计 源代码