91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

JavaSocket編程心跳包創建實例解析

1.什么是心跳包?

創新互聯專注于企業成都全網營銷、網站重做改版、保康網站定制設計、自適應品牌網站建設、HTML5、商城網站制作、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為保康等各大城市提供網站開發制作服務。

心跳包就是在客戶端和服務器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似于心跳,所以叫做心跳包。

用來判斷對方(設備,進程或其它網元)是否正常運行,采用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經離線。用于檢測TCP的異常斷開。基本原因是服務器端不能有效的判斷客戶端是否在線,也就是說,服務器無法區分客戶端是長時間在空閑,還是已經掉線的情況。所謂的心跳包就是客戶端定時發送簡單的信息給服務器端告訴它我還在而已。代碼就是每隔幾分鐘發送一個固定信息給服務端,服務端收到后回復一個固定信息如果服務端幾分鐘內沒有收到客戶端信息則視客戶端斷開。

比如有些通信軟件長時間不使用,要想知道它的狀態是在線還是離線就需要心跳包,定時發包收包。發包方:可以是客戶也可以是服務端,看哪邊實現方便合理,一般是客戶端。服務器也可以定時發心跳下去。一般來說,出于效率的考慮,是由客戶端主動向服務器端發包,而不是服務器向客戶端發。客戶端每隔一段時間發一個包,使用TCP的,用send發,使用UDP的,用sendto發,服務器收到后,就知道當前客戶端還處于“活著”的狀態,否則,如果隔一定時間未收到這樣的包,則服務器認為客戶端已經斷開,進行相應的客戶端斷開邏輯處理。

2.以下是實現Java心跳包的簡單實例

a)服務器端Server.java

package cn.yw.socket.heart;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends Thread{
	private ServerSocket server = null;
	Object obj = new Object();
	@Override
	  public void run() {
		try{
			while(true){
				server = new ServerSocket(25535);
				Socket client = server.accept();
				synchronized(obj){
					new Thread(new Client(client)).start();
				}
			}
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	/**
   * 客戶端線程
   * @author USER
   *
   */
	class Client implements Runnable{
		Socket client;
		public Client(Socket client){
			this.client = client;
		}
		@Override
		    public void run() {
			try{
				while(true){
					ObjectInput in = new ObjectInputStream(client.getInputStream());
					Entity entity = (Entity)in.readObject();
					System.out.println(entity.getName());
					System.out.println(entity.getSex());
				}
			}
			catch(Exception e){
				e.printStackTrace();
			}
		}
	}
	/**
   *程序的入口main方法
   * @param args
   */
	public static void main(String[] args){
		new Server().start();
	}
}

b)客戶端Client.java

package cn.yw.socket.heart;
public class Client extends Thread{
	@Override
	  public void run() {
		try{
			while(true){
				ClientSender.getInstance().send();
				synchronized(Client.class){
					//          this.wait(5000);
					Thread.sleep(2000);
				}
			}
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	/**
   * 程序的入口main方法
   * @param args
   */
	public static void main(String[] args){
		Client client = new Client();
		client.start();
	}
}
package cn.yw.socket.heart;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class ClientSender{
	private ClientSender(){
	}
	Socket sender = null;
	private static ClientSender instance;
	public static ClientSender getInstance(){
		if(instance==null){
			synchronized(Client.class){
				instance = new ClientSender();
			}
		}
		return instance;
	}
	public void send(){
		try{
			sender = new Socket(InetAddress.getLocalHost(),25535);
			while(true){
				ObjectOutputStream out = new ObjectOutputStream(sender.getOutputStream());
				Entity obj = new Entity();
				obj.setName("syz");
				obj.setSex("男");
				out.writeObject(obj);
				out.flush();
				Thread.sleep(5000);
			}
		}
		catch(Exception e){
		}
	}
}

3.實體類Entity.java

package cn.yw.socket.heart;
import java.io.Serializable;
public class Entity implements Serializable{
	private String name;
	private String sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

總結

以上就是本文關于Java Socket編程心跳包創建實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:

Java多線程編程實現socket通信示例代碼

Java編程利用socket多線程訪問服務器文件代碼示例

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


本文題目:JavaSocket編程心跳包創建實例解析
文章地址:http://www.yuzhuanjia.cn/article/joidhe.html
主站蜘蛛池模板: 91视频国产亚 | 变态sm天堂无码专区 | 国产爆乳无码精品视频 | 韩国新r级限制片 | 丰满熟女高潮毛茸茸欧洲视频 | 国产白浆在线视频网 | 高清国语自产 | 99久久精品免费看国产高清 | 91福利国产在线观看香蕉 | 东京热无码国产精 | 国产70老熟女重口小伙子 | 91国偷自产一区二区三区蜜臀 | 国产av毛片一 | av无码岛国免费动作片美女跪求资源欧美 | 午夜无码密臀av少妇影视 | 日韩av无码大全 | 国产不卡一区二区免费视频 | 91传媒制片厂制作网站 | 高清乱码一区二区三区 | 午夜宅男永久 | a级一级 | 91欧美激情一区二区三区成人 | 午夜国产在线播放 | av一本久道久久综合久久鬼色 | 国产aⅴ一区二区 | av视屏| 91人妻视频免费网 | av毛片高清在线观看 | 91国内免费在线视频 | 国产3p精品一区二区三区 | 91福利网站 | 变态另类区sm一区 | 海角社区最新视频在线观看 | 99久久久久久亚洲精品 | 午夜免费看 | 国产91精品久久久久久久 | 国产91蜜桃麻 | 91黑丝大长腿你视频里见过我 | aⅴ亚洲 | av永久天堂一区二 | 97在线视频免费人妻 |