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

📄 sendpacket.java

📁 j2me radius soket radius client
💻 JAVA
字号:
package org.radiusClient.com;
//import RMStore;

import java.io.IOException;
import java.util.Date;
import java.util.Random;
import javax.microedition.io.Connector;
import javax.microedition.io.Datagram;
import javax.microedition.io.UDPDatagramConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;

import org.gui.com.AcctStartForm;
import org.gui.com.F1;

public class SendPacket {

	String hostname;
	String secret;
	String username;
	String userpass;
	String local_host_IP;
	String server_IP;
	UDPDatagramConnection udpdc;
	int count;
	Display dp; 
	long packet_num;
	int timeout;
	int accttype;
	int dispPacket;
	
	public SendPacket(String server_IP,String secret,String username,String userpass,long packet_num,int timeout,int dispPacket) {
		// TODO Auto-generated constructor stub
		this.server_IP = server_IP;
		this.secret = secret;
		this.username = username;
		this.userpass = userpass;
		this.packet_num = packet_num;
		this.timeout = timeout;
		this.dispPacket = dispPacket;
	}
	
	public SendPacket(String server_IP,String secret,String username,int accttype) {
		// TODO Auto-generated constructor stub
		this.server_IP = server_IP;
		this.secret = secret;
		this.username = username;
		this.accttype = accttype;
	}
	
	public void sendAction(final Form f,Display display)
	{
		dp=display;
		
		
		new Thread() {
			byte str1=-1;
			public void run() {
				try {
					udpdc = (UDPDatagramConnection) Connector
							.open(server_IP);
				} catch (IOException e1) {
					e1.printStackTrace();
				}

			      long total_msec = 0;
			      long pq_msec = 0;
			      
				String received_code_string = "接收信息";
				int total_received = 0;
				int acceptcount = 0;
				byte id = 0;

				try{
					
					server_IP = "datagram://" + "127.0.0.1" + ":"
					+ 1813;
					
				    final F1 f1 = new F1(server_IP,"接收结果",f,dp);
																
				    for (count = 0; count < packet_num; count++) 
					{
						AccessPacket acessrequest=new AccessPacket(id);
						byte request[] = acessrequest.composepacket(username, userpass, secret, udpdc);
					    
						if(dispPacket==1)
						{
							f1.appendStr("发送报文的内容:");
							for(int i=0;i<request.length;i++)
							{
								f1.appendStr(""+request[i]);
							}
							f1.appendStr("\n");
						}
						
							Datagram sdg = udpdc.newDatagram(request,
									request.length);
							udpdc.send(sdg);
							
							Date date=new Date();
							//写日志
							RMStore rms = new RMStore("rmstore");
							rms.writeRecord(date+":"+"\n"+"发送一个认证报文");
							rms.closeRecStore();
							
							Alert anAlert = new Alert("谢谢使用", "信息发送中...............", null,AlertType.INFO);
									anAlert.setTimeout(1000);
									dp.setCurrent(anAlert,f1);
														
							f1.appendStr("本地端口号:" + udpdc.getLocalPort());
														
				            long time_send_packet_long = date.getTime();
				            f1.appendStr("发送开始时间:" + date + "\n");

							Datagram rdg = udpdc.newDatagram(512);
						      new Thread(){
		                        	int m_rate = 100;
		                        	int m_length=timeout;
		                        	int m_elapsed=0;		                            			                           		                            	  
		              
		                        	//判断连接超时地实现
		                        	public void run()
		                        	{
		                        		   System.out.println("timer running");
		                        		   for (;;) {
		                        		    // Put the timer to sleep
		                        		    try {
		                        		     Thread.sleep(m_rate);
		                        		    } catch (InterruptedException ioe) {
		                        		     continue;
		                        		    }
		
		                        		    synchronized (this) {
		                        		     m_elapsed += m_rate;
				                        		    
		                        		     if (m_elapsed > m_length&&str1==-1 ) {
		                        		      timeout();
		                        		      break;
		                        		     }
		                        		     else if(str1!=-1)
		                        		     {
		                        		    	 Thread.yield();
		                        		    	 break;
		                        		     }
		                        		    }
		
		                        		   }
		                        	}
		                        	
		                        	  public void timeout() {
		                        	      try {
		                        	    	  f1.appendStr("发送超时:没有消息返回" + "\n");
		                        	    	  udpdc.close();
		          							Date date=new Date();
		        							//写日志
		        							RMStore rms = new RMStore("rmstore");
		        							rms.writeRecord(date+":"+"\n"+"发送报文超时");
		        							rms.closeRecStore();
											 
											 
										} catch (Exception e) {
											// TODO Auto-generated catch block
											e.printStackTrace();
										//	System.out.println("连接超时:没有消息返回");
										}                           	     
		                        	    }
		                        }.start();//判断连接超时地实现方法的结束
							udpdc.receive(rdg);
															
							Date date1 = new Date();
							long time_receive_packet_long = date1.getTime();
							f1.appendStr("接收时间:"+ date1 + "\n");
							
							long msec = time_receive_packet_long - time_send_packet_long;
							total_msec += msec;
							
							byte response[] = rdg.getData();
															
							byte received_code = response[0];
							str1=received_code;
							byte received_id = response[1];
							if (received_code == 2) {
								received_code_string = "Accept";
								f1.appendStr(count + " : " + byte_int0255(id)
										+ " /  " + byte_int0255(received_id)
										+ " /  " + received_code_string + "\n");
//								Date date=new Date();
								//写日志
								RMStore rms1 = new RMStore("rmstore");
								rms1.writeRecord(date1+":"+"\n"+"接收到一个接入成功报文");
								rms1.closeRecStore();
								acceptcount++;																		
							} else if (received_code == 3 || received_code == 11) {
								received_code_string = "Reject";
								f1.appendStr(count + " : " + byte_int0255(id)
										+ " /  " + byte_int0255(received_id)
										+ " /  " + received_code_string + "\n");
								RMStore rms1 = new RMStore("rmstore");
								rms1.writeRecord(date1+":"+"\n"+"接收到一个接入拒绝报文");
								rms1.closeRecStore();
							} else {
								received_code_string = "Unknown";
								f1.appendStr(count + " : " + byte_int0255(id)
										+ " /  " + byte_int0255(received_id)
										+ " /  " + received_code_string + "\n");
								RMStore rms1 = new RMStore("rmstore");
								rms1.writeRecord(date1+":"+"\n"+"接收到一个未知报文");
								rms1.closeRecStore();
							}								
							total_received++;
		
					        f1.setSi(total_received);
					        f1.appendStr("延时:" + msec + "ms" + "\n");
					        f1.appendStr("*************************"+"\n");
					        id++;
					        
					}//for count 循环结束
					
					pq_msec = total_msec/packet_num;
					f1.appendStr("统计信息:" +  "\n");
					f1.appendStr("平均延时时间:" + pq_msec + "ms" + "\n");
					f1.appendStr("请求成功个数:" + acceptcount + "\n");
					f1.appendStr("*************************"+"\n");
					
					
					if(acceptcount!=0)
					{
						f1.addAcctCommand();
					}
									
				}	 catch (IOException e) {
					
					//e.printStackTrace();
					System.out.println("连接超时:没有消息返回");
					//break;
				}
		
			}
		}.start();
	}
	
	public void sendAcctStart(AcctStartForm f1)
	{
		server_IP = "datagram://" + "127.0.0.1" + ":"
		+ 1813;	
		long startTime = 0;
		UDPDatagramConnection udpdc1;
		byte[] request1;
		byte response1[];
		try {
			udpdc1 = (UDPDatagramConnection) Connector
			.open(server_IP);
			AccountPacket accoutrequest = new AccountPacket(4,0);
			request1=accoutrequest.composepacket(username,"123","shaomxing",accttype,startTime,udpdc1);

			Datagram sdg1 = udpdc1.newDatagram(request1,
					request1.length);
			udpdc1.send(sdg1);
			
			Date date=new Date();
			//写日志
			RMStore rms = new RMStore("rmstore");
			rms.writeRecord(date+":"+"\n"+"发送一个计费开始请求报文");
			rms.closeRecStore();
			
			f1.append("发送计费请求......"+"\n");
			
			f1.append("本地端口号:" + udpdc1.getLocalPort() + "\n");

			Datagram rdg1 = udpdc1.newDatagram(512);

			udpdc1.receive(rdg1);
			response1 = rdg1.getData();
			for(int i = 0;i < request1.length;i++)
			{
				if(request1[i] == 40 && request1[i+1] == 6)
				{
					if(request1[i+5] == 1)
					{
						Date acctdate = new Date();
						startTime = acctdate.getTime();
						f1.setSi(acctdate);
						f1.append("收到服务器确认信息:记账开始"+"\n");
						f1.append("正在计费......"+"\n");
						Date date1=new Date();
						//写日志
						RMStore rms1 = new RMStore("rmstore");
						rms1.writeRecord(date1+":"+"\n"+"接收到一个计费回应报文"+"\n"+"计费开始......");
						rms1.closeRecStore();
					}else if(request1[i+5] == 2){
						f1.append("收到服务器确认信息:记账中止"+"\n");
					}else{
						f1.append("未知信息"+request1[i+5]+"\n");
						}
					
				}
			}
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	
	public void sendAcctStop(Form f1,long startTime)
	{
		server_IP = "datagram://" + "127.0.0.1" + ":"
		+ 1813;								
		UDPDatagramConnection udpdc1;
		byte[] request1;
		byte response1[];
		try {
			udpdc1 = (UDPDatagramConnection) Connector
			.open(server_IP);
			
			Date acctdate = new Date();
			long stopTime = acctdate.getTime();
			
			long sumTime = stopTime - startTime;
			
			AccountPacket accoutrequest = new AccountPacket(4,0);
			request1=accoutrequest.composepacket(username,"123","shaomxing",accttype,sumTime,udpdc1);

			Datagram sdg1 = udpdc1.newDatagram(request1,
					request1.length);
			udpdc1.send(sdg1);
			
			Date date=new Date();
			//写日志
			RMStore rms = new RMStore("rmstore");
			rms.writeRecord(date+":"+"\n"+"发送一个计费中止请求报文");
			rms.closeRecStore();
			
			f1.append("发送计费请求......"+"\n");
			
			f1.append("本地端口号:" + udpdc1.getLocalPort() + "\n");

			Datagram rdg1 = udpdc1.newDatagram(512);

			udpdc1.receive(rdg1);
			
			response1 = rdg1.getData();
			for(int i = 0;i < request1.length;i++)
			{
				if(request1[i] == 40 && request1[i+1] == 6)
				{
					if(request1[i+5] == 1)
					{
	//					f1.setAcctTime(time_acct_start_long);
						f1.append("收到服务器确认信息:记账开始"+"\n");
						f1.append("正在计费......"+"\n");
					}else if(request1[i+5] == 2){
						f1.append("收到服务器确认信息:记账中止"+"\n");
						f1.append("计费认证时间:"+sumTime+"ms"+"\n");
						Date date1=new Date();
						//写日志
						RMStore rms1 = new RMStore("rmstore");
						rms1.writeRecord(date1+":"+"\n"+"接收到一个计费回应报文"+"\n"+"计费结束");
						rms1.closeRecStore();
					}else{
						f1.append("未知信息"+request1[i+5]+"\n");
						}
					
				}
			}

			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	
	public synchronized int String_to_int(String str) {
		int x = Integer.parseInt(str);
		return x;
	}


	public synchronized int byte_int0255(byte x_byte) {
		int x_int = x_byte & 0xFF;

		return x_int;
	}

}

⌨️ 快捷键说明

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