亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jim.java

?? 照書上做的JIM軟件,不過不知道為什么還不能運行.要是能調出來功能絕對完善
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
		  {
		  	this.dispose();
		  	System.exit(0);
		  }
		  
		  //處理窗口的關閉事件
		  protected void processWindowEvent(WindowEvent e){
		  	super.processWindowEvent(e);
		  	if(e.getID()==WindowEvent.WINDOW_CLOSING){
		  		System.exit(0);
		  	}
		  }
		}
		
		
		//JimWin類
//JIM主界面類。該類通過列表顯示出好友及好友的狀態,并通過快捷菜單的方式提供收發信息、查看好友資料、增加好友和刪除好友的功能。代碼如下:		
 class JimWin extends JFrame implements Runnable
 {  int myImNo;                   //本人的JIM號
 	Vector myFriends=new Vector();//好友的列表
 	String[] faceOnline;          //在線時好友圖像文件名
    String[] faceOffline;         //離線時好友圖像文件名
    Thread  thread;               //接收信息線程
    
    //以下是網絡相關變量
  String serverName;                 //服務器名或IP地址
  int serverPort;                    //服務器端口號
  byte receiveBuf[ ]=new byte[512];  //UDP方式接收數據的數據緩沖區
  DatagramPacket receivePacket;      //接收數據報Packet
  DatagramSocket receiveSocket;      //接收數據報Socket
  //默認接收消息的UDP端口號。
  //若在同一臺計算機上啟動多個JIM端口號將自動加1
  int udpPORT=5001;
  //以下是程序界面的變量
  JPanel contentPane;
  JScrollPane jspList;    //滾動面板
  JList jlstFriend;       //好友列表,將放置在滾動面板上
  JPopupMenu jPopupMenu1=new JPopupMenu();  //快捷菜單
  JMenuItem mnItemMsg=new JMenuItem();      //收發訊息菜單
  JMenuItem mnItemInfo=new JMenuItem();     //查看資料菜單
  JMenuItem mnItemAddFriend=new JMenuItem(); //增加好友菜單
  JMenuItem mnItemDelFriend=new JMenuItem();//刪除好友菜單
  
  
 //主程序構造方法 
  public JimWin(int s,String serverName,int serverPort)
  {
  	enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  	try
  	{
  		myImNo=s;                                //得到自己的JIM號
  		this.serverName=serverName;              //服務器名
  		this.serverPort=serverPort;              //服務器TCP通訊端口號
  		mainWinInit();                           //初始化界面
  		ConnectServer(myImNo);                   //連接服務器做登記工作和查詢好友
  		thread=new Thread(this);                 //創建監視接收消息端口的線程
  		thread.start();                          //啟動監視接收消息端口的線程
  	}
  	catch(Exception e)
  	{
  		e.printStackTrace();
  	}
  }
 //初始化主程序界面
  	private void mainWinInit()throws Exception
  	{
  		//設置在線頭像的圖像文本過濾器
  		FilenameFilter fileFilterOn=new FilenameFilter(){
  			public boolean accept(File dir,String name){
  				if(name.endsWith("_1.JPG")||name.endsWith("_1.jpg")){
  					return true;
  				}
  				return false;
  			}
  		};
  
 //設置離像頭像的圖像文件過濾器
 FilenameFilter fileFilterOff=new FilenameFilter(){
 	public boolean accept(File dir,String name){
 		if(name.endsWith("_2.JPG")||name.endsWith("_2.jpg")){
  					return true;
  				}
  				return false;
  			}
  		};
 
 //指定圖像文件的目錄在當前目錄的face子目錄下
 File dir=new File("face");
 //得到在線頭像的圖像文件列表
 faceOnline=dir.list(fileFilterOn);
 //得到離線頭像的圖像文件列表
 faceOffline=dir.list(fileFilterOff);
 
 
 this.getContentPane().setBackground(new Color(132,158,203));
 this.setResizable(false);
 this.setSize(new Dimension(200,400));
 this.setTitle("JIM");
 contentPane=(JPanel)this.getContentPane();
 contentPane.setLayout(null);
 
 
 //通過MVS方式定制好友列表
 ListModel model=new NameAndPicListModel(myFriends,faceOnline);
 ListCellRenderer renderer=new NameAndPicListCellRenderer();
 jlstFriend=new JList(model);
 jlstFriend.setBackground(new Color(255,255,210));
 jlstFriend.setAlignmentX((float)1.0);
 jlstFriend.setAlignmentY((float)1.0);
 jlstFriend.setCellRenderer(renderer);
 jlstFriend.setVisibleRowCount(7);
 jlstFriend.addMouseListener(new java.awt.event.MouseAdapter(){
 	public void mouseClicked(MouseEvent e){
 	jlstFriend_mouseClicked(e);
    }
  });
  
mnItemMsg.setText("收發訊息");
mnItemMsg.addMouseListener(new java.awt.event.MouseAdapter(){
	public void mousePressed(MouseEvent e){
		mnItemMsg_mousePressed(e);
	 }
 });

mnItemInfo.setText("查看資料");
mnItemInfo.addMouseListener(new java.awt.event.MouseAdapter(){
	public void mousePressed(MouseEvent e){
		mnItemInfo_mousePressed(e);
	 }
 });
 	
mnItemAddFriend.setText("增加好友");
mnItemAddFriend.addMouseListener(new java.awt.event.MouseAdapter(){
	public void mousePressed(MouseEvent e){
		mnItemAddFriend_mousePressed(e);
	}
});	

mnItemDelFriend.setText("刪除好友");
mnItemDelFriend.addMouseListener(new java.awt.event.MouseAdapter(){
	public void mousePressed(MouseEvent e){
		mnItemDelFriend_mousePressed(e);
	}
});


jspList=new JScrollPane(jlstFriend);
jspList.setBounds(10,10,175,350);
contentPane.add(jspList);
jPopupMenu1.add(mnItemMsg);
jPopupMenu1.add(mnItemInfo);
jPopupMenu1.add(mnItemAddFriend); 
jPopupMenu1.add(mnItemDelFriend);  
}


//以下該方法為連接服務器端,并進行接收消息的UDP端口號登記和查詢好友信息等
public void ConnectServer(int myImNo)
{
	Socket socket;
	BufferedReader in;
	PrintWriter out;
	try
	{  
  		   socket=new Socket(InetAddress.getByName(serverName),serverPort);
		   in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		   out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
		   //向服務器端發送登記接收信息的UDP端口號請求
		   out.println("CLIENTPORT");
		   out.println(String.valueOf(CreateUDP()));
		   out.println(String.valueOf(myImNo));
		   out.println("FRIEND");
           out.println("myImNo");
             String fNickName, fImNo, fFace,fSex,fAge,fIp,fRPort,fOnline,fEMail,fHomePage,fPhone,fResume;
       do
       {
       	//循環讀取服務器端返回的好友信息,直到服務器端發送OVER
       	fNickName=in.readLine();
       	if(fNickName.equals("OVER"))  break;
       	fImNo=in.readLine();
       	fFace=in.readLine();
       	fSex=in.readLine();
        fAge=in.readLine();
 	    fIp=in.readLine();
 	    fRPort=in.readLine();
 	    fOnline=in.readLine();  
        fEMail=in.readLine(); 
        fHomePage=in.readLine();
        fPhone=in.readLine();
        fResume=in.readLine();
        //將好友信息生成好友對象,并加入到好友列表中
        myFriends.add(new Friend(fNickName, fIp, fEMail,fHomePage,fPhone,fResume,Integer.parseInt(fImNo),
                 Integer.parseInt(fRPort),Integer.parseInt(fFace),Integer.parseInt(fSex),Integer.parseInt(fAge),
                 Integer.parseInt(fOnline)));
                }while(!fNickName.equals("OVER"));
                //向服務器發送查詢哪些人加我為好友的請求
                out.println("GETWHOADDME");
                out.println(myImNo);
                DatagramPacket sendPacket;
                DatagramPacket sendSocket;
                int sendPort=5000;
                do
                {
                	//讀取服務器端返回的好友IP地址、UDP端口和好友JIM號
                	fIp=in.readLine();
                	if(fIp.equals("OVER")) break;
                	fRPort=in.readLine();
                	fImNo=in.readLine();
                	//通過UDP方式向好友發送我在線消息
                	sendSocket=new DatagramSocket(sendPort);
                	Message msg=new Message(myImNo,Integer.parseInt(fImNo),"ONLINE",String.valueOf(udpPORT));
                	byte[] data;
                	data=msg.returnMessage().getBytes();
                	sendPacket=new DatagramPacket(data,data.length,InetAddress.getByName(fIP),Integer.parseInt(fRPort));
                	sendSocket.send(sendPacket);
                	sendSocket.close();
                }while(!fIp.equals("OVER"));
                //向服務器端發送終止通訊的請求
                out.println("END");
                socket.close();
              }
              
              catch(IOException e1)
              {
              	System.out.println("FALSE");
              }
              
              //以下在列表中顯示好友
              DefaultListModel mn=(DefaultListModel)jlstFriend.getModel();
              int faceId;
              for(int i=0;i<myFriends.size();i++)  //對所有好友做
              {
              	faceId=((Friend)myFriends.get(i)).fFace;  //獲取好友頭像號
              	if(((Friend)myFriends.get(i)).fOnline==1)
              	{
              		//若好友在線,則在列表中顯示在線的頭像
              		mm.addElement(new Object[]{((Friend)myFriends.get(i)).fNickName,new ImageIcon ("face/"+faceOnline[faceId-1])});
              	}
              	else
              {
              	//若好友離線,則在列表中顯示離線的頭像
              	mm.addElement(new Object[]{((Friend)myFriends.get(i)).fNickName,new ImageIcon ("face/"+faceOffline[faceId-1])});
                }
              }
              //若有好友存在則列表框的當前選擇為第1個好友
              if(myFriends.size()>0)jlstFriend.setSelectedIndex(0);
            }
            
            
            
  //下面的方法用于創建用戶接收信息的UDP數據報Socket和Packet         
 public int CreateUDP()
 {
 	boolean flag=false;
 	int i=0;
 	do
 	{
 		try
 		{
 			udpPORT+=i++;
 			receiveSocket=new DatagramSocket(udpPORT);
 			receivePacket=new DatagramSocket(receiveBuf,receiveBuf.length);
 			flag=true;        //創建成功
 		}
 		
 		catch(SocketException se)
 		{
 			//若有異常說明該端口已經使用,于是循環端口號加1再試
 			//主要是在同一臺計算機上打開多個JIM軟件時有用
 		} 
 	}while(!flag);
 	return udpPORT;       //返回UDP端口號
}
//關閉程序
protected void processWindowEvent(WindowEvent e)
{
	super.processWindowEvent(e);
	Socket socket;
	BufferedReader in;
	PrintWriter out;
	if(e.getID()==WindowEvent.WINDOW_CLOSING)
	{
		try
		{  socket=new Socket(InetAddress.getByName(serverName),serverPort);
		   in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		   out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
		   //向服務器發送查詢誰加我為好友的請求
		     out.println("GETWHOADDME");
			 out.println(myImNo);
 			 DatagramPacket sendPacket;
 			 DatagramSocket sendsocket;
 			 int sendPort=5000;
 			 String fIp,fRPort,fImNo;
 			 do
 			 {
 			 	//獲得好友的信息,直到服務器發送OVER消息
 			 	fIp=in.readLine();
 			 	if(fIp.equals("OVER")) break;
 			 	fRPort=in.readLine();
 			 	fImNo=in.readLine();
 			 	sendSocket=new DatagramSocket(sendPort);
 			 	//構造消息并通過UDP方式發出,該消息告訴好友我離線
 			 	Message msg=new Message(myImNo,Integer.parseInt(fImNo),"OFFLINE"," ");
 			  byte[] data;
 			  data=msg.returnMessage().getBytes();
 			  sendPacket=new
     DatagramPacket(data,data.length,InetAddress.getByName(fIp),Integer.parseInt(fRPort));
 			  sendSocket.send(sendPacket);
 			  sengSocket.close();
 			}while(!fIp.equals("OVER"));
 			//告訴服務器我下線了
 			out.println("LOGOUT");
 			out.println(myImNo);
 			//告訴服務器終止通訊
 			out.println("END");
 			socket.close();
 		}
 		
 		catch(Exception e2)
 		{
 			e2.printStackTrace();
 		}
 		System.exit(0);
 	}
}

//好友列表框發生mouseClicked事件
void jlstFriend_mouseClicked(MouseEvent e)
{
	if(e.isMetaDown())                  //判斷是否是鼠標左鍵
	{
		//顯示快揭菜單
		jPopupMenu1.show(this,e.getX()+20,e.getY()+20);
	}
}

//添加好友菜單選中
void mnItemAddFriend_mousePressed(MouseEvent e)
{
	//打開添加好友窗口直接根據JIM號添加好友
	AddFriend addFriend=new AddFriend(this,-1);  //-1表示需要顯示界面
	addFriend.setLocationRelativeTo(this);
	addFriend.show();                           //顯示添加好友窗口
}


//收發訊息菜單選中
void mnItemMsg_mousePressed(MouseEvent e)
{
	int index;
	index=jlstFriend.getSelectedIndex();              //得到好友序列
	if((index>=0)&&(((Friend)myFriends.get(index)).fOnline==1))
	
	{
		((Friend)myFriends.get(index)).showMessageDlg(this);//顯示通訊窗口
	}
}


//刪除好友菜單選中
void mnItemDelFriend_mousePressed(MouseEvent e)
{
	int index;
	index=jlstFriend.getSelectedIndex();   //得到好友序列
	if(index>=0)
	{
		try
		{
			Socket socket;
			BufferedReader in;
	        PrintWriter out;
	      socket=new Socket(InetAddress.getByName(serverName),serverPort);
		  in=new BufferedReader(new InputStreamReader(socket.getInputStream()));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品卡一卡二卡三卡四在线| 成人在线视频一区二区| 一区二区高清免费观看影视大全| 欧美久久久久中文字幕| 欧美日本在线一区| 日韩欧美在线一区二区三区| 精品国产污污免费网站入口| 日韩精品最新网址| 国产精品午夜久久| 亚洲欧美另类图片小说| 亚洲一区二区三区中文字幕| 亚洲国产精品视频| 国产一区二区三区精品欧美日韩一区二区三区| 午夜a成v人精品| 国产美女在线观看一区| 在线观看视频一区二区欧美日韩| 欧美日韩亚洲不卡| 国产色婷婷亚洲99精品小说| 亚洲国产成人在线| 日产精品久久久久久久性色| 国产毛片一区二区| 欧美精品视频www在线观看| 国产日韩欧美麻豆| 奇米777欧美一区二区| av在线一区二区| 欧美mv日韩mv国产| 亚洲丶国产丶欧美一区二区三区| 久久66热re国产| 欧美日韩一级二级| 一区二区三区日韩欧美精品| 国产91在线观看丝袜| 精品少妇一区二区| 日韩中文字幕区一区有砖一区 | av在线一区二区| 日韩一区二区三区高清免费看看| 亚洲综合男人的天堂| bt欧美亚洲午夜电影天堂| 欧美成人aa大片| 另类中文字幕网| 欧美电视剧在线观看完整版| 一个色妞综合视频在线观看| 成人成人成人在线视频| 国产精品三级电影| 成人免费高清在线| 亚洲欧美另类综合偷拍| 91亚洲永久精品| 亚洲综合成人在线视频| 在线视频国内自拍亚洲视频| 亚洲久草在线视频| 制服丝袜亚洲色图| 国产一区二区三区蝌蚪| 国产日韩欧美在线一区| 成人v精品蜜桃久久一区| 亚洲欧美日韩精品久久久久| 国内精品伊人久久久久av影院 | 欧美一区二区三区在线观看| 婷婷久久综合九色综合伊人色| 欧美美女黄视频| 青青青爽久久午夜综合久久午夜| 91精品国产综合久久久久| 老司机午夜精品99久久| 欧美国产日韩精品免费观看| 日本韩国欧美一区二区三区| 美腿丝袜一区二区三区| 中文字幕av一区 二区| 欧美视频一区二| av午夜一区麻豆| 久久精品二区亚洲w码| 亚洲欧美电影一区二区| 日韩欧美第一区| 91国模大尺度私拍在线视频| 国产在线精品一区二区不卡了 | 波多野结衣一区二区三区| 无吗不卡中文字幕| 亚洲精品中文字幕乱码三区| 精品毛片乱码1区2区3区| 欧美四级电影在线观看| 99久久精品情趣| av中文字幕亚洲| 成人精品免费视频| 国产一区二区三区久久悠悠色av| 午夜不卡在线视频| 午夜亚洲福利老司机| 亚洲精品午夜久久久| 国产精品看片你懂得| 国产精品福利影院| 亚洲天堂久久久久久久| 欧美高清在线精品一区| 国产精品免费视频网站| 国产精品国产馆在线真实露脸| 国产欧美精品一区二区色综合| 欧美大白屁股肥臀xxxxxx| 欧美美女一区二区| 日韩一区二区高清| 337p日本欧洲亚洲大胆色噜噜| 精品少妇一区二区三区视频免付费 | 欧美一级理论性理论a| 欧美在线制服丝袜| 欧美不卡在线视频| 中文字幕国产一区| 午夜精品一区在线观看| 九九热在线视频观看这里只有精品| 美女在线一区二区| 日本精品裸体写真集在线观看| 欧美在线影院一区二区| 精品黑人一区二区三区久久| 亚洲国产成人一区二区三区| 亚洲成人自拍网| 大尺度一区二区| 日韩一区二区三区三四区视频在线观看 | 天堂成人国产精品一区| 丁香婷婷综合激情五月色| 欧美丝袜丝nylons| 国产精品高清亚洲| 激情国产一区二区| 欧美一区二区二区| 夜色激情一区二区| 成人av网站免费| 日韩欧美国产综合一区 | 色中色一区二区| 久久久精品日韩欧美| 美女免费视频一区二区| 在线视频国产一区| 一区二区三区四区视频精品免费| 国产一区二区三区在线观看免费视频 | 91免费视频观看| 国产精品久久久久久妇女6080| 精品一区二区国语对白| 69堂成人精品免费视频| 亚瑟在线精品视频| 91成人看片片| 视频一区中文字幕国产| 欧美日韩色一区| 日本特黄久久久高潮| 日韩欧美国产不卡| 久久草av在线| 国产精品丝袜在线| 91麻豆免费看片| 午夜精品一区在线观看| 日韩女优视频免费观看| 国产一区二区0| 国产精品乱码人人做人人爱| 91一区在线观看| 麻豆一区二区三| 国产日韩v精品一区二区| 99riav一区二区三区| 亚洲一区二区在线视频| 日韩免费高清视频| 成人app软件下载大全免费| 一区二区三区在线视频播放| 欧美美女一区二区在线观看| 经典三级一区二区| 伊人开心综合网| 精品国产91久久久久久久妲己 | 中文字幕五月欧美| 欧美日韩美少妇| 国产成人三级在线观看| 亚洲 欧美综合在线网络| 欧美国产激情二区三区| 欧美一区三区四区| 日本精品免费观看高清观看| 美女一区二区三区在线观看| 亚洲黄色av一区| 中文乱码免费一区二区| 精品第一国产综合精品aⅴ| 欧美亚洲综合在线| 99riav一区二区三区| 国产麻豆视频一区二区| 裸体在线国模精品偷拍| 亚洲国产毛片aaaaa无费看 | 国产高清无密码一区二区三区| 日韩国产在线观看一区| 夜夜嗨av一区二区三区中文字幕| 国产日产欧美一区二区视频| 精品久久久久久综合日本欧美| 欧美制服丝袜第一页| 国产一区 二区| 国产乱一区二区| 国产高清久久久| 国产成人亚洲综合色影视| 美女免费视频一区| 自拍偷拍国产亚洲| 91精品一区二区三区久久久久久 | 日韩一区和二区| 精品少妇一区二区三区视频免付费 | 欧美军同video69gay| 日韩一区二区影院| 久久综合九色欧美综合狠狠| 国产日韩视频一区二区三区| 亚洲国产精品传媒在线观看| 亚洲精品国产a久久久久久| 亚洲成人资源在线| 国产精品456露脸| 日本高清无吗v一区| 欧美一区二区三区在线电影| 国产日韩欧美一区二区三区综合| 成人欧美一区二区三区小说 | 717成人午夜免费福利电影| 久久久99精品久久| 亚洲午夜精品在线|