1. 하트 비트 가방이란 무엇입니까?
하트 비트 패킷은 자체 정의 된 명령 단어로, 클라이언트와 서버 사이의 자체 상태를 상대방에게 정기적으로 알리고 심장 박동과 유사한 특정 시간 간격으로 전송되므로 하트 비트 패킷이라고합니다.
상대방 (장치, 프로세스 또는 기타 네트워크 요소)이 정상적으로 작동하는지 여부를 결정하는 데 사용됩니다. 시간을 사용하여 간단한 통신 패킷을 보냅니다. 지정된 기간 내에 상대방의 응답이 접수되지 않으면 상대방이 오프라인 상태 인 것으로 결정됩니다. TCP의 비정상적인 단절을 감지하는 데 사용됩니다. 기본 이유는 서버가 클라이언트가 온라인 상태인지, 즉 서버가 클라이언트가 오랫동안 유휴 상태인지 또는 연결이 끊어 졌는지 여부를 구별 할 수 없기 때문입니다. 소위 하트 비트 패킷은 클라이언트가 서버에 정기적으로 간단한 정보를 보낸다는 것입니다. 코드는 몇 분마다 고정 메시지를 서버로 보내는 것입니다. 수신 후 서버는 고정 된 메시지에 응답합니다. 서버가 몇 분 이내에 클라이언트 정보를 수신하지 않으면 클라이언트가 연결이 끊어집니다.
예를 들어, 일부 통신 소프트웨어는 오랫동안 사용되지 않습니다. 상태가 온라인인지 오프라인인지 여부를 알고 싶다면 하트 비트 패킷이 필요하고 정기적으로 패킷을 보내고받습니다. 계약자 : 고객 또는 서버 일 수 있습니다. 그것은 어느 쪽이 구현하기 편리하고 합리적인 지에 따라 다르며 일반적으로 클라이언트입니다. 서버는 또한 심장 박동이 정기적으로 발생할 수 있습니다. 일반적으로 효율성의 이유로 클라이언트는 서버가 클라이언트로 보내는 대신 패킷을 서버로 적극적으로 보냅니다. 클라이언트는 TCP를 사용하여 가끔씩 패킷을 보냅니다. 서버가 수신 한 후에는 현재 클라이언트가 여전히 "살아있는"상태에 있음을 알 수 있습니다. 그렇지 않으면, 특정 기간이 지나면 해당 패킷을 수신하지 않으면 서버는 클라이언트가 연결이 끊어 졌다고 생각하여 해당 클라이언트 단절 로직 처리를 수행한다고 생각합니다.
2. 다음은 Java 하트 비트 패키지를 구현하는 간단한 예입니다.
a) 서버 측 서버 .java
패키지 cn.yw.socket.heart; import java.io.objectinput; import java.io.objectinputstream; import java.net.serversocket; import java.net.socket; public class server extends 스레드 {private server server = null; object obj = new object ();@reveride public void run () {true (true) {true (true) {true (true). serversocket (25535); socket client = server.accept (); synchronized (obj) {새 스레드 (새 스레드 (새 클라이언트)). start ();}}} catch (예외 e) {e.printstacktrace ();}}/** * 클라이언트 스레드 * @author user * */class client; this client; client;}@public void run () {try {while (true) {객체 input in = new ObjectInputStream (client.getInputStream ()); entity entity = (entity) in.readObject (); system.out.println (entity.getName ()); system.out.println (entity.getsex ()); e) {e.printstacktrace ();}}}/***프로그램의 입력 메소드*@param args*/public static void main (string [] args) {new Server (). start ();}}}b) Client.java
패키지 cn.yw.socket.heart; public class 클라이언트 확장 스레드 {@override public void run () {try {while (true) {clientsender.getInstance.getInstance (). send (); synchronized (client.class) {// this.wait (5000); thread.sleep (2000);}}}}}}}}}}}}}}} e) {e.printstacktrace ();}}/*** 프로그램 입력 메인 메소드* @param args*/public static void main (string [] args) {client client = new Client (); client.start ();}} 패키지 cn.yw.socket.heart; import java.io.objectoutputStream; import java.net.inetAddress; import java.net.socket; public clientsender {private clientsender () {} socket sender = null; private static clientsender getinstance (if) {synchronized (null). 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 ( "male"); out.writeObject (obj); out.flush (); thread.sleep (5000);3. 엔티티 클래스 엔티티. 자바
패키지 cn.yw.socket.heart; import java.io.serializable; public class Entity를 구현할 수 있습니다 {private string name; private string sex; public string getName () {return name;} public void setName (문자열 이름) {this.name = public string getsex () {return setsex (string) {sex rex (string)}요약
위의 것은 Java 소켓 프로그래밍 하트 비트 패키지 제작 예제에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Java Multithreaded 프로그래밍에서 소켓 통신 구현을위한 샘플 코드
서버 파일에 액세스하기 위해 소켓 멀티 스레딩을 사용하는 Java 프로그래밍 코드 예제
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!