上一章:跟我实现半导体SECSGEM通讯协议之(一)- HSMS消息格式
HSMS连接的建立
HSMS全称为High-Speed SECS Message Services,它的通讯是建立在TCP/IP基础上的,基于TCP/IP,HSMS有一套它自己的握手流程。
整个通讯过程中的状态分为以下3种:
- NOT CONNECTED: TCP/IP还没有建立连接或是连接已经断开时的状态
- CONNECTED/NOT SELECTED: 表示TCP/IP连接已经建立,但是HSMS连接还没有正式建立。此时连接的一端可以向另一端发送Select.req消息以准备建立HSMS连接。
- CONNECTED/SELECTED: 当连接一端收到Select.rsp消息后进入此状态并开始收发HSMS消息
HSMS连接模式:
HSMS连接模式就像是TCP/IP中的服务器与客户端一样为分两种模式:
- ACTIVE: 以客户端的身份去连接:
首先创建ACTIVE模式下的客户端套接字,配制好服务器地址后去连接服务器IP以及端口,一但连接上便可进行TCP/IP消息收发。
if ((clnt_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
fprintf(stderr, "Create Active mode socket failed.\n");
return -1;
}
memset(&serv_addr, 0, sizeof(struct sockaddr_in));
serv_addr.sin_family = AF_INET