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

📄 sendbysocket.java

📁 一个用于实现不同数据库数据同步的程序
💻 JAVA
字号:
import java.net.*;
import javax.net.ssl.*;
import javax.net.*;
import java.io.*;
import javax.naming.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.sql.DriverManager;
import com.ibm.db2.jcc.*;



public class sendBySocket
{

	private String databaseName="";
	private InetAddress receiverHost;
	private int receiverPort;
	private InetAddress myHost;
	private int myPort;
	private String txtAddress="";
	private String sslKey="";

	sendBySocket(String dn,String ta)
	{
		databaseName=dn;
		sqlOperation so=new sqlOperation();
		try
		{
			myHost=InetAddress.getByName(so.StringFromDB("select * from DBINFORMATION where STATE=1","DBHOST"));
			myPort=Integer.parseInt(so.StringFromDB("select * from DBINFORMATION where STATE=1","DBSENDPORT"));
		}
		catch(Exception e){}
		txtAddress=ta;
	}

	public void sendBatchMessages(String ntime)
	{

		sqlOperation so=new sqlOperation();
		ResultSet rs=null;
		rs=so.ResultSetFromDB("select * from DBINFORMATION where STATE=0");
		String password="",pno="",dbname="";
		writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");
		Random random;

		try
		{

			while(rs.next())
			{
				receiverHost=InetAddress.getByName(rs.getString("DBHOST"));
				receiverPort=Integer.parseInt(rs.getString("DBRECEIVEPORT"));
				sslKey=rs.getString("SSL");
				dbname=rs.getString("DBNAME");

				random = new Random();
				pno=""+Math.abs(random.nextInt())%10000;

				writeMissionManage.insertWriting("\t"+pno+"\t"+dbname+"\t0",ntime);
				sendingOneOfMesg(dbname,pno);
			}
		}
		catch(Exception e){}
	}

	public void sendSingleMessage(String dn,String Mesg)
	{
		String s="";
		String temp="";
		int start=0,mid=0,end=0;
		dealMessage cutingMessage=new dealMessage();
		
		sqlOperation so=new sqlOperation();
		ResultSet rs=null;
		rs=so.ResultSetFromDB("select * from DBINFORMATION where DBNAME='"+dn+"'");

		SSLSocketFactory factory=null;
		Socket socket=null;
		PrintWriter out=null;

		try
		{
			while(rs.next())
			{
				receiverHost=InetAddress.getByName(rs.getString("DBHOST"));
				receiverPort=Integer.parseInt(rs.getString("DBRECEIVEPORT"));
				sslKey=rs.getString("SSL");
			}
		}catch(Exception e){}

		try
		{
			System.setProperty("javax.net.ssl.trustStore",sslKey);
			factory=(SSLSocketFactory)SSLSocketFactory.getDefault();
			socket=factory.createSocket(receiverHost,receiverPort);
			out=new PrintWriter(socket.getOutputStream(),true);
			out.println(Mesg);

			out.close();
			socket.close();
		}
		catch(IOException e){}
	}


	public void sendingOneOfMesg(String dDB,String pn)
	{

		String s="",temp="";
		String sendMesg="";
		String pno=pn;
		String sql=null;
		int cnt = 0;

		File file=null;
		//Key k=null;
		RandomAccessFile fr=null;
		byte insertStr[]=null;
		long l=0,mark=0;

		int start=0,mid=0;
		dealMessage cutingMessage=new dealMessage();

		
		SSLSocketFactory factory=null;
		Socket socket=null;
		PrintWriter out=null;

		writeText writeDaily=new writeText(databaseName,txtAddress,"Database Daily.txt");

		try
		{
			//k=new Key(txtAddress);
			file=new File(txtAddress+"MissionManageTemp.txt");
			//k.decrypt(txtAddress+"MissionManageTemp.txt");
			fr=new RandomAccessFile(file,"rw");
			
			l=fr.getFilePointer();
			while((s=fr.readLine())!=null)
			{
				mid=s.indexOf("\t");
				if(mid>0)
				{
					start=0;
					temp=cutingMessage.cutMessage(s,start,mid);
					if(temp.equals("Update"))
					{
						mark=l;
						cnt=0;
					}
					else
					{
						cnt++;
					}
				}
				else
				{break;
					/*if((s.indexOf(pno))!=-1)
					{
						start=s.lastIndexOf("\t");
						mid=s.length();
						temp=cutingMessage.cutMessage(s,start,mid);
						if(temp.equals("0"))
						{
							break;
						}
					}*/
				}	
				l=fr.getFilePointer();
			}
			
			//连接
			System.setProperty("javax.net.ssl.trustStore",sslKey);
			factory=(SSLSocketFactory)SSLSocketFactory.getDefault();
			socket=factory.createSocket(receiverHost,receiverPort);
			out=new PrintWriter(socket.getOutputStream(),true);
				
    
			getUpdateTime gut=new getUpdateTime();
			writeDaily.writingDaily(gut.getSystemTime()+"\tSend synchronism messages to "+dDB);

			if(cnt>1)
			{
				// 发送包头信息
				s="package\t"+pno+"\t"+databaseName+"\t   "+cnt;
				out.println(s);

				fr.seek(mark);
				fr.readLine();
				while((s=fr.readLine())!=null)
				{
					socket=factory.createSocket(receiverHost,receiverPort);
					out=new PrintWriter(socket.getOutputStream(),true);
				
					if(s.indexOf("\t")<1)
					{
						break;
					}
					else
					{
					sendMesg=pno+"\t"+s;
					out.println(sendMesg);
					}
				}
			}
			else
			{
				if(cnt==1)
				{
					fr.seek(mark);
					fr.readLine();
					if((s=fr.readLine())!=null)
					{
						sendMesg="single\t"+pno+"\t"+databaseName+"\t"+s;
						out.println(sendMesg);
					}
				}
			}
			//k.encryption(txtAddress+"MissionManageTemp.txt");
			fr.close();

			out.close();
			socket.close();

		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		
	}
}

⌨️ 快捷键说明

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