在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java语言基础 → java 简单聊天室 例子源码

java 简单聊天室 例子源码

Java语言基础

下载此实例
  • 开发语言:Java
  • 实例大小:0.03M
  • 下载次数:59
  • 浏览次数:451
  • 发布时间:2014-10-09
  • 实例类别:Java语言基础
  • 发 布 人:goto
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 聊天

实例介绍

【实例简介】
【实例截图】

【核心代码】

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;

import javax.swing.*;

public class Socket10 extends JFrame implements Runnable, ActionListener{
	public Panel leftPanel;
    public Panel rightPanel;
    public Panel lastPanel;
    public Button button1=new Button("创建服务器"),button2,button3,button4;
    public TextArea text1,text2,text3,text4;
    public Label label1,label2,label3,label4; 
    private TextField textfield1,textfield2,textfield3,textfield4;
    
    Thread inithread;
    String IPserver=null;
	 String nameserver=null;
	 String strin=null;
	 String Address = "44444";
	 String name = "44444";
	 String s=null;
	 String Stringss=null;
		String Strname=null;
	 int scan=2;
	 int lock=0;
	 //Stringarray soctr;
	 //Stringarray soctr1;
	 ServerSocket server=null;
	 Socket you=null;
	 DataInputStream in=null,in1=null;
	 DataOutputStream out=null,out1=null;
	private Socket mysocket;
    
    ////////////////////////////////////得到主机名字//////////////////////////////////////////////////////
    public static String getname(String s)
    {
    	try
        {
        InetAddress myip=InetAddress.getLocalHost();
        s=myip.getHostName();
        }
        catch(IOException e2)
    	{
    	}	
    	return s;
    }
    
    ////////////////////////////////////得到主机IP//////////////////////////////////////////////////////////
    public static String getip(String s)

    {
    	try
        {
        InetAddress myip=InetAddress.getLocalHost();
        s=myip.getHostAddress();
        }
        catch(IOException e2)
    	{
    	}	
    	return s;
    }
    

    ///////////////////////////////////////创建主界面/////////////////////////////////////////
    
    private void launchFrame()
	{
    	label1=new Label("IP地址");//"IP地址"
        label2=new Label("本机名称");
        textfield1=new TextField(getip(Address),19);
        textfield2=new TextField(getname(name),19);
        textfield3=new TextField(14);
        textfield4=new TextField(14);
        text1=new TextArea(20,68);
        text2=new TextArea(3,68);
        text3=new TextArea(14,25);
        text4=new TextArea(9,25);
        
        
        button1=new Button("创建服务器");
        button2=new Button("搜索服务器");
        button3=new Button("发送");
    	Container c=getContentPane();
        c.setLayout(new BorderLayout());
        Panel firstPanel=new Panel();
        Panel leftPanel=new Panel();
        Panel rightPanel=new Panel();
        Panel subleftPanel1=new Panel();
        Panel subleftPanel2=new Panel();
        Panel lastPanel=new Panel();
        Panel subrightPanel1=new Panel();
        Panel subrightPanel2=new Panel();
        leftPanel.setLayout(new BorderLayout());
        rightPanel.setLayout(new BorderLayout());
        firstPanel.add(label1);
        firstPanel.add(textfield1);
        firstPanel.add(label2);
        firstPanel.add(textfield2);
        subleftPanel1.add(text1);
        subleftPanel2.add(text2);
        subrightPanel1.add(text3);
        subrightPanel2.add(text4);
        leftPanel.add(subleftPanel1,BorderLayout.NORTH);
        leftPanel.add(subleftPanel2,BorderLayout.SOUTH);
        rightPanel.add(subrightPanel1,BorderLayout.NORTH);
        rightPanel.add(subrightPanel2,BorderLayout.SOUTH);
        firstPanel.add(button1);
        firstPanel.add(button2);
        lastPanel.add(button3);
        c.add(firstPanel,BorderLayout.NORTH);
        c.add(leftPanel,BorderLayout.CENTER);
        c.add(rightPanel,BorderLayout.EAST);
        c.add(lastPanel,BorderLayout.SOUTH);
        this.pack();
        setSize(700,500);
        setTitle("聊天HD");
        setVisible(true);
        Window fream;
        setResizable(false);
        
	}
    
     
	//////////////////////////////////////////////////////////////////////////////////////////////////////
    
	 private void addWindowListener(WindowAdapter windowAdapter) throws IOException {
		// TODO Auto-generated method stub
		 if(scan==0)
		 {
			 out.writeUTF("endover");
			 you.close();
			 System.exit(0);
		 }
		 else if(scan==1)
		 {
			 out1.writeUTF("endover");
			 mysocket.close();
			 System.exit(0);
		 }
	}

	/////////////////////////////////////////////开启服务/////////////////////////////////
	 private void startServer()
		{
			try 
			{
				button1.setLabel("停止服务器");
				ServerSocket server=new ServerSocket(7028);
				you=server.accept();
				
				
			} 
			catch (Exception e) 
			{
				text3.setText("");
				text3.append("服务器启动错误,请重新设置后启动!\n可能是由于:\n");
				text3.append("1.端口被占用。\n");
				text3.append("2.服务器已经启动。\n");
				e.printStackTrace();
			}
		}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////
	 
	 private void StartClient() 
	 {
		 try
		 {
			 String IP=textfield1.getText();
		    Socket mysocket;
			
			mysocket=new Socket(IP,7028);
			in1=new DataInputStream(mysocket.getInputStream());
			out1=new DataOutputStream(mysocket.getOutputStream());
			text4.append("连接到服务器!\n");
			nameserver=textfield2.getText();
			out1.writeUTF("begin" nameserver);
			button2.setLabel("退出服务器");
			//mysocket.close();
		 }
		 catch (Exception e) 
		 {
			 text4.append("无法连接网络!\n");
		 }
		 
			
	 }
	
	 /////////////////////////////////////////////////////////////////////////////////////////////////////
	 
	 public void Message()
		{
			button1.addActionListener(this);
			button2.addActionListener(this);
			button3.addActionListener(this);
		}
	
	 ///////////////////////////////////////////////////////////////////////////////////////////////////
	 public void actionPerformed(ActionEvent e) 
		{
		 //////////////////////////////////////////////////////////////////////////////////////////////
			if(e.getSource()==button1)
			{
				if(lock==0)
				{
				 IPserver=getip(IPserver);
				 text3.setText("");
				 text3.append("服务器IP地址:" IPserver "\n");
				 text3.append("服务器名称:" textfield2.getText() "\n");
				 textfield1.setText(getip(nameserver));
				 text3.append("端口号:7028" "\n");
				 text3.append("服务器已启动,正在监听......" "\n");
				// button1.setName("停止服务器");
				 
				 this.startServer();
				 scan=0;
				 lock=1;
				}
				else  
					{
					try {
						out=new DataOutputStream(you.getOutputStream());
						out.writeUTF("endover");
						text3.append("服务器已关闭!" "\n");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
						text3.append("服务器关闭出现问题,请稍后重试!" "\n");
					}
					}
			}
			
			////////////////////////////////////////////////////////////////////////////////////////////
			else if(e.getSource()==button3)
			{ 
				
				if(scan==0)
				{
				 //String IPserver=null;
				 String nameserver=null;
				 try {
					//in=new DataInputStream(you.getInputStream());
					out=new DataOutputStream(you.getOutputStream());
					//IPserver=getip(IPserver);
					nameserver=textfield2.getText();
					if(text2.getText().length()>0)
					{
					text1.append("---" nameserver "---说:  \n" text2.getText() "\n"); 
					out.writeUTF(text2.getText());
					text2.setText("");
					}
					else 
					{
						text2.setText("\n\n                              无输入内容!");
						try {
							Thread.sleep(1000);
						} catch (InterruptedException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
						text2.setText("");
						
						}
					//text1.append("---" nameserver "---说:11  \n" text2.getText() "\n"); 
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					//text1.append("---" nameserver "---说:  \n" text2.getText() "\n"); 
					e1.printStackTrace();
				}
				
				}
				else if(scan==1)
				{
					try {
						//in1=new DataInputStream(mysocket.getInputStream());
						//out1=new DataOutputStream(mysocket.getOutputStream());
						nameserver=textfield2.getText();
						if(text2.getText().length()>0)
						{
						text1.append("---" nameserver "---说:  \n" text2.getText() "\n"); 
						out1.writeUTF(text2.getText());
						text2.setText("");
						}
						else 
							{
							text2.setText("\n\n                              无输入内容!");
							try {
								Thread.sleep(1000);
							} catch (InterruptedException e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}
							text2.setText("");
							
							}
						//text1.append("---" nameserver "---说: 22 \n" text2.getText() "\n"); 
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					
				}
				else 
				{
					text2.setText("");
					text2.append("\n\n                              网络未连接!!!");
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					text2.setText("");
				}
				
				
			}
			
			//////////////////////////////////////////////////////////////////////////////////////////////////////
			else if(e.getSource()==button2)
			{if(lock==0)
			{
				 text4.setText("");
				 text4.append("开始搜索服务器,请稍后......\n");	
				 scan=1;
				// button2.setName("退出服务器");
				 this.StartClient();
				 lock=1;
			}
			else  
				try {
					out=new DataOutputStream(mysocket.getOutputStream());
					out.writeUTF("endover");
					text4.append("已退出登录!\n");	
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
					text4.append("退出连接失败,请稍后重试!\n");	
				}
				//text4.append("已连接服务器,请勿重复连接!\n");	
			
			}
		}
	
	 ///////////////////////////////////////////////////////////////////////////////////////////////
	 
	 public void MessageSaR() throws InterruptedException, IOException
		{
			if(scan==0)
			{
				try
				{
					//接收消息
				
					//InputStreamReader input=new InputStreamReader(you.getInputStream());
					//BufferedReader read=new BufferedReader(input);
					in=new DataInputStream(you.getInputStream());
					out=new DataOutputStream(you.getOutputStream());
					String recvier=in.readUTF();
					//String Stringss=null;
					//String Strname=null;
					//Stringss=recvier.substring(0,5);
					if(recvier.length()>4)
					{
						Stringss=recvier.substring(0,5);
					if(Stringss.equals("begin")&&recvier.length()>4)
					{
						Strname=recvier.substring(5);
						text3.append("客户机-" Strname "-已登录\n");
						out.writeUTF("conna" textfield2.getText());
						//Thread.sleep(200);
						//out.writeUTF("conip" textfield1.getText());
						//text1.append("---" Strname "---说:  \n" recvier "\n");
						//text1.append("conip" textfield1.getText() "\n");
					}
					if(Stringss.equals("endov")&&recvier.length()>4)
					{
						text3.append("客户机-" Strname "-已退出\n");
						you.close();
					}
					}
					if(recvier.length()<5)
						text1.append("---" Strname "---说:  \n" recvier "\n");
					if(!Stringss.equals("begin")){
						text1.append("---" Strname "---说:  \n" recvier "\n");
					}
					
					
					//else text1.append("---" Strname "---说:  \n" recvier "\n");
					
				}
				catch (Exception e) 
				{
					e.printStackTrace();
				}
				//Thread.sleep(100);
			}
			else if(scan==1)
			{
				try
				{
					//接收消息
					//text1.append("客户端:\n");
					
					//DataInputStream in=null;
					//DataOutputStream out=null;
					//mysocket=new Socket("localhost",7028);
					//in1=new DataInputStream(mysocket.getInputStream());
					//out=new DataOutputStream(mysocket.getOutputStream());
					//text1.append("客户端2:\n");
					String recvier=in1.readUTF();
					//text1.append("客户端3:\n");
					
					//if(Stringss.equals("conna"))
					//{
						
					//	text4.append("服务器名称:" Strname "\n");
						//text1.append("客户端4:" recvier "\n");
					//}
					if(recvier.length()>4)
					{
						Stringss=recvier.substring(0,5);
					if(Stringss.equals("conna")&&recvier.length()>4)
					{
						Strname=recvier.substring(5);
						text4.append("服务器名称:" Strname "\n");
						
						//text1.append("客户端4:" recvier "\n");
					}
					if(Stringss.equals("endov")&&recvier.length()>4)
					{
						text4.append("服务器-" Strname "-已关闭\n");
						//out1.writeUTF("endover");
						mysocket.close();
					}
					}
					
					//Stringss=recvier.substring(0,5);
					//text1.append("客户端1:" recvier "\n");u
					if(recvier.length()<5)
						text1.append("---" Strname "---说:  \n" recvier "\n");
					if(!Stringss.equals("conna")){
						text1.append("---" Strname "---说:  \n" recvier "\n");
					}
					//else
					
					//else if(Stringss.equals("conip"))
					//{
					//	Stringss=recvier.substring(5);
					//	text4.append("服务器IP:" Stringss);
					//	text1.append("客户端5:" recvier "\n");
					//}
					
						//text1.append("---" Strname "---说:  \n" recvier "\n");
					
				}
				catch (Exception e) 
				{
					e.printStackTrace();
				}
				//Thread.sleep(100);
				//mysocket.close();
			}
		}
	 ///////////////////////////////////////////////////////////////////////////////////////
	 public static void main(String args[]) throws InterruptedException, IOException
	    {
		 Socket10 aa=new Socket10();
		 aa.launchFrame();
		 aa.Message();
		 while(true)
		 {
		 aa.MessageSaR();
		
		 }
	    }
	@Override
	public void run() {
		// TODO Auto-generated method stub
		
	}


}

标签: 聊天

实例下载地址

java 简单聊天室 例子源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警