⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handleconnection.java

📁 JAVA做的简单手机短信平台
💻 JAVA
字号:

// The Handle connection class - that deals will all client requests directly
import java.net.*;
import java.io.*;
import java.util.*;
public class Handleconnection extends Thread{
	private String phonenumber;
	private Message getmessage = new Message(null,null,null);
	private String servernumber = "0000";
	private Socket clientSocket;   // Client socket object
	private ObjectInputStream is;     // Input stream
	private ObjectOutputStream os;    // Output stream
	
	//	 The constructor for the connecton handler
	public Handleconnection(Socket clientSocket)
	{
		this.clientSocket = clientSocket;
	}
	public void run() 
	{
		try
		{
			
			this.is = new ObjectInputStream(clientSocket.getInputStream());
			
			this.os = new ObjectOutputStream(clientSocket.getOutputStream());
			
			this.readphonenumber();
			while(true){this.readCommand();}
		}
		catch (IOException e)
		{
			e.printStackTrace();
			MP_Server.status.setText(MP_Server
					.status.getText()+e.toString()+"\n");
		}
	}
	//	 Receive and process incoming phonenumber from client socket
	private void readphonenumber()
	{
		try
		{
			getmessage = (Message)is.readObject();
		}
		catch (Exception e)
		{
			
			this.close();
		}
		
		if(getmessage.getoppositenumber().equals("0000")&& getmessage.getMessagetext().equals("sendnumber@"))
		{
			phonenumber=getmessage.getmynumber();
			this.addnumber(phonenumber);
			MP_Server.currentnumber.addItem(phonenumber);
				
		}
	}
	//	 Receive and process incoming command from client socket 
	private void readCommand() 
	{
		try
		{
			getmessage = (Message)is.readObject();
			
		}
		catch (Exception e)
		{
			this.senderrormessage();
		}
		if (getmessage.getMessagetext() == null)
		{
			this.sendvacantmessage();
			
		}
		else
		{
			//		 invoke the appropriate function based on the command 
			if (getmessage.getoppositenumber().equals("0000"))// verdict message send to themessageserver
			{
			
				if(getmessage.getMessagetext().equals("receive")) 
				{
					
					this.sendmessage(); 
				}
				else
				{
					if(getmessage.getMessagetext().equals("closephone"))
					{
							
						this.removenumber(getmessage.getmynumber());
							
						this.close();
					}
					else
					{
						this.senderrormessage();
					}
				}
				
			}
			else
			{
				
				if(getmessage.getoppositenumber().equals("000011"))
				{
					
					if(getmessage.getMessagetext().equals("send"))
					{
						
						this.receivepicturemessage();
					}
					else
					{
						this.sendpicturemessage();
					}
				}
				else
				{
				// show total number of message
				this.settotalnumber();
				// show this message on lastmessage field
				this.setmessage(getmessage);
				//add this message in Vector
				this.addmessage(getmessage);
				this.setpernumber();

				// show total size of message
				this.settotalsize(getmessage);
				}
			}
		}
	}
	public void senderrormessage()//the method to send a message tell client command is wrong
	{
		Message errormessage = new Message(servernumber,getmessage.getmynumber(),"You command is wrong !");
		this.sendmessageatonce(errormessage);
	}
	public void sendvacantmessage()//the method to send a message tell client has send a vacant message
	{
		Message vacantmessage = new Message(servernumber,getmessage.getmynumber(),"Your message is vacant !");
		this.sendmessageatonce(vacantmessage);
	}
	//the method to send a message at once need a Message
	public synchronized void sendmessageatonce(Message amessage)
	{
		try
		{
			MP_Server.status.setText(MP_Server.
					status.getText()+"Sending a message to " 
					+ getmessage.getmynumber()+"\n");
			this.os.writeObject(amessage);
			this.os.flush();
		}
		catch (Exception ex)
		{
			MP_Server.status.setText(MP_Server
					.status.getText()+ex.toString()+"\n");
			System.out.println(ex.toString());
		}
	}
	public void close()//close the socket connection
	{
		try 
		{
			MP_Server.status.setText(MP_Server.status.getText()+
					"The phone "+getmessage.getmynumber()+" close !\n");
			MP_Server.currentnumber.removeItem(getmessage.getmynumber());
			this.os.close();
			this.is.close();
			this.clientSocket.close();
			this.stop();
		}
		catch (Exception ex)
		{
			MP_Server.status.setText(MP_Server
					.status.getText()+ex.toString()+"\n");
			System.out.println(ex.toString());
		}
	}
	//send picture message
	public synchronized void sendpicturemessage()
	{
		try
		{
				FileInputStream fos=new FileInputStream(new File("newFile.jpg")); 				
				byte[] buf=new byte[2048]; 
				fos.read(buf);
				try
				{					
					this.os.writeObject(buf);
					
					this.os.flush();
				}
				catch (Exception ex)
				{
					//receivemassagepage.setText("Cannot open socket connection\n"+ ex.toString()); 
				}
		 
		}
		catch (Exception ex)
		{
			System.out.println(ex.toString()+"123");
		}
	}
	//	receive picture message
	public synchronized void receivepicturemessage()
	{
		try
		{
			File file=new File("newFile.jpg");
			RandomAccessFile raf=new RandomAccessFile(file,"rw");
		    byte[] buf=new byte[2048];
			buf=(byte[])is.readObject();
			raf.write(buf);
		
		}
		catch(Exception ex)
		{
			System.out.println(ex.toString());
		}
	}
	//send message when get the command receive
	public synchronized void sendmessage()
	{
		Iterator theData = MP_Server.TheMessageServerVector.iterator();
		//choose the frist message to this number to send
		Message amessage = new Message(null,null,null);
		
		int i=MP_Server.TheMessageServerVector.size();
		int k=0;
		if (i>0)
		{
			int j=0;
			while (j<i)
			{
				amessage.setmessage((Message)MP_Server.TheMessageServerVector.get(j));
				if(amessage.getoppositenumber().equals(getmessage.getmynumber()))
				{
					this.sendmessageatonce(amessage);
					k=1;
					//remove the message which has be send
					MP_Server.TheMessageServerVector.remove(j);
					break;
				}
				j++;
			}
		}
		if(k==0)
		{
			Message nullmessage = new Message(servernumber,getmessage.getmynumber(),
						"You do not have a message!");
			this.sendmessageatonce(nullmessage);
		}
	}
	//remove the closed phone number in Vector
	public synchronized void removenumber(String anumber)
	{
		MP_Server.TheMessageServerNumberVector.remove(anumber);
	}
	// find the opposite number is on line or not
	public boolean  findnumber(String number)
	{
		Iterator theData = MP_Server.TheMessageServerNumberVector.iterator();
		
		int i = 0;
		while (theData.hasNext())
		{
			if (((String)theData.next()).equals(number))
			{
				i=1;
			}
		}
		if(i==1)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	// send a message to client tell them that they have some message

	public int getcount(String number)
	{
		Iterator theData = MP_Server.TheMessageServerVector.iterator();
		int i = 0;
		while (theData.hasNext())
		{
			if (((Message)theData.next()).getoppositenumber().equals(number))
			{
				i++;
			}
		}
		return i;
	}
	public synchronized void addmessage(Message amessage)
	{
		MP_Server.TheMessageServerVector.add(amessage);
	}
	public synchronized void addnumber(String anumber)
	{
		MP_Server.TheMessageServerNumberVector.add(anumber);
	}
	public synchronized void setmessage(Message amessage)
	{
		MP_Server.detail.setText(amessage.getMessagetext());
	}
	public synchronized void settotalnumber()
	{
		MP_Server.messagenumber++;
		MP_Server.numberot.setText("There are"+MP_Server
				.messagenumber+"already!");
	}
	public synchronized void settotalsize(Message amessage)
	{
		long totalsize=amessage.getMessagetext().length();
		MP_Server.messagesize=MP_Server.messagesize+totalsize;
		MP_Server.physize.setText(MP_Server.messagesize+"byte");
	}
	public synchronized void setpernumber()
	{
		double pernumber= MP_Server.messagenumber/MP_Server.TheMessageServerNumberVector
		.size();
		MP_Server.numberpp.setText("the number per phone is"+pernumber);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -