기능 1 : 클라이언트 요청 데이터 및 서버 응답 데이터는 모두 Java 객체이며 형식 변환 (예 : JSON 및 XML 패킷 변환 작업)이 필요하지 않습니다. 개발 비용을 크게 줄이고 두 개의 물리적으로 분리 된 프로그램 또는 서비스간에 액세스 할 수 있습니다. 단일 프로그램처럼 운영됩니다.
기능 2 : 데이터 통신이 떠 다니는 임시 포트를 통해 전달되며, 고주파 액세스는 주 포트 1721에서 혼잡 병목 현상을 유발하지 않습니다.
기능 3 : 비밀번호가없는 로그인 또는 비밀번호 확인 로그인을 지원하고 비밀번호 확인 규칙을 직접 정의 할 수 있습니다.
기능 4 : 맞춤형 이벤트, 프로그램 또는 서비스 이벤트를 지원합니다. 기본값은 Xjava 이벤트 처리 메커니즘, 즉 메모리 공유 모드입니다 .
기능 5 : 데이터 통신을위한 플로팅 포트, 타임 아웃을위한 자동 종료 기능.

서버 구성의 예
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< config >
< import name = " xconfig " class = " java.util.ArrayList " />
< import name = " server " class = " org.hy.common.net.ServerSocket " />
<!-- 系统服务配置信息 -->
< xconfig >
< server id = " Server " >
< port >1721</ port > <!-- 服务端监听主端口 -->
< minPort >17000</ minPort > <!-- 数据通讯的浮动端口的最小值 -->
< maxPort >17999</ maxPort > <!-- 数据通讯的浮动端口的最大值 -->
< closeTimeout >60</ closeTimeout > <!-- 数据通讯的浮动端口的自动关闭超时时长(单位:秒) -->
< log >false</ log > <!-- 是否显示通讯日志 -->
<!-- 自定义服务端登陆验证接口。可选的,当没有定义验证方法时,免登陆 -->
< validate class = " org.hy.demo.ServerValidate " />
< call name = " addListener " > <!-- 添加自定义通讯事件 -->
< listener class = " org.hy.demo.ServerDemo " />
</ call >
< call name = " open " /> <!-- 打开监听主端号服务 -->
</ server >
</ xconfig >
</ config >서버 측 사용자 정의 이벤트
public class ServerDemo implements ServerEventListener
{
/**
* 数据通讯的事件类型。
*
* 事件类型区分大小写
*/
public String getEventType ()
{
return "Demo" ;
}
/**
* 数据通讯事件的执行动作
*/
public CommunicationResponse communication ( CommunicationRequest i_RequestData )
{
CommunicationResponse v_ResponseData = new CommunicationResponse ();
// 获取客户端请求数据
Map < String , Object > v_DataMap = ( Map < String , Object >) i_RequestData . getData ();
System . out . println ( "-- 服务端接收到的数据为:" );
Help . print ( v_DataMap );
v_ResponseData . setData ( Help . toListKeys ( v_DataMap )); // 设置返回结果
return v_ResponseData ;
}
}클라이언트 액세스의 예
Map < String , Object > v_DataMap = new HashMap < String , Object >();
v_DataMap . put ( "String" , "ABCDEFG" );
v_DataMap . put ( "Integer" , 1234567890 );
v_DataMap . put ( "Date" , new Date ());
CommunicationRequest v_RequestData = new CommunicationRequest ();
CommunicationResponse v_ResponseData = null ;
List < String > v_Results = null ;
v_RequestData . setEventType ( "Demo" ); // 通讯的事件类型。如果没有设置此属性,默认为XJava事件类型
v_RequestData . setDataXID ( "2017" ); // 通讯数据的标识ID。可选的,按具体业务而定
v_RequestData . setData ( i_DataMap ); // 通讯数据。可选的,按具体业务而定。可为任何Java类型,须实现 java.io.Serializable 接口
ClientSocket v_Client = new ClientSocket ( "服务端IP" , 1721 );
v_Client . setValidate ( new ClientValidate ()); // 如果服务端启用了登陆验证,则客户端要提供用户名及密码
v_ResponseData = v_Client . send ( v_RequestData ); // 发送通讯数据
v_Results = ( List < String >) v_ResponseData . getData (); // 获取服务端的返回结果。可为任何Java类型,只须实现 java.io.Serializable 接口即可데모 프로젝트 https://github.com/hy-zhengwei/communicationeventdemo
단일 로그인 서비스 케이스 https://github.com/hy-zhengwei/xsso
클러스터 관리 사례 https://github.com/hy-zhengwei/logweb
견적 https://github.com/hy-zhengwei/hy.common.base 클래스 라이브러리
https://github.com/hy-zhengwei/hy.common.file 클래스 라이브러리를 인용하십시오