在线聊天完整代码Word格式.docx
- 文档编号:22947805
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:10
- 大小:15.45KB
在线聊天完整代码Word格式.docx
《在线聊天完整代码Word格式.docx》由会员分享,可在线阅读,更多相关《在线聊天完整代码Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
publicclassChatClientextendsFrame{
TextFieldtfTxt=newTextField();
TextAreataContent=newTextArea();
Sockets=null;
DataOutputStreamdos=null;
DataInputStreamdis=null;
privatebooleanbConnected=false;
ThreadtRece=newThread(newReceThread());
publicstaticvoidmain(String[]args){
newChatClient().launchFrame();
}
publicvoidlaunchFrame(){
this.setLocation(300,200);
this.setSize(400,400);
add(tfTxt,BorderLayout.SOUTH);
add(taContent,BorderLayout.NORTH);
pack();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
if(s!
=null)disConnect();
System.exit(0);
}
});
tfTxt.addActionListener(newTFListener());
setVisible(true);
connect();
tRece.start();
publicvoidconnect(){
try{
s=newSocket("
127.0.0.1"
8888);
dos=newDataOutputStream(s.getOutputStream());
dis=newDataInputStream(s.getInputStream());
System.out.println("
connected!
"
);
bConnected=true;
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
System.out.println("
服务器忙,请稍后再试!
}
publicvoiddisConnect(){
dos.close();
dis.close();
s.close();
/*try{
bConnected=false;
tRece.join();
}catch(InterruptedExceptione){
}finally{
try{
dos.close();
dis.close();
s.close();
}catch(IOExceptione){
e.printStackTrace();
}*/
privateclassTFListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
Stringstr=tfTxt.getText().trim();
tfTxt.setText("
dos.writeUTF(str);
dos.flush();
}catch(IOExceptione){
privateclassReceThreadimplementsRunnable{
publicvoidrun(){
while(bConnected){
Stringstr=dis.readUTF();
taContent.setText(taContent.getText()+str+'
\n'
}
}catch(SocketExceptione){
;
}catch(EOFExceptione){
System.out.println("
退出了,bye-bye!
}
catch(IOExceptione){
}
ChatServer.java
import.BindException;
import.ServerSocket;
importjava.util.ArrayList;
importjava.util.List;
publicclassChatServer{
booleanstarted=false;
ServerSocketss=null;
List<
Client>
clients=newArrayList<
();
newChatServer().start();
publicvoidstart(){
ss=newServerSocket(8888);
started=true;
}catch(BindExceptione){
对不起,端口被占用!
System.exit(0);
while(started){
Sockets=ss.accept();
Clientc=newClient(s);
Aclientconnected!
newThread(c).start();
clients.add(c);
}catch(IOExceptione){
ss.close();
classClientimplementsRunnable{
privateSockets;
privateDataInputStreamdis=null;
privatebooleanbConnected=false;
privateDataOutputStreamdos=null;
publicClient(Sockets){
this.s=s;
dis=newDataInputStream(s.getInputStream());
dos=newDataOutputStream(s.getOutputStream());
bConnected=true;
publicvoidsend(Stringstr){
try{
dos.writeUTF(str);
}catch(IOExceptione){
clients.remove(this);
System.out.println("
对方退出了,我从list里面去除了!
while(bConnected){
System.out.println(str);
for(inti=0;
i<
clients.size();
i++){
Clientc=clients.get(i);
c.send(str);
/*for(Iterator<
it=clients.iterator();
it.hasNext();
){
Clientc=it.next();
}*/
/*Iterator<
it=clients.iterator();
while(it.hasNext()){
clientclosed!
}finally{
try{
if(dis!
=null)dis.close();
if(dos!
=null)dos.close();
if(s!
=null)s.close();
}catch(IOExceptione){
e.printStackTrace();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 聊天 完整 代码