FINS/TCP Method

Section 7-4

192}

194printf("FINS/TCP header receive length %d¥n",recvlen);

195recvlen = fins_tcp_header[6];

196recvlen <<=8;

197recvlen += fins_tcp_header[7];

198recvlen -= 8; /* SUBTRACT LENGTH OF COMMAND & ERROR CODE OF FINS/TCP HEADER*/

199printf("FINS/TCP frame receive length %d¥n",recvlen);

200}

201else

202{

203err_exit("TCP receive error");

204}

206/* RECEIVE FINS RESPONSE FRAME*/

207if (tcp_recv(sockfd, fins_resp, recvlen) == recvlen)

208{

209

alarm(0); /* STOP RESPONSE MONITOR TIMER*/

210printf("recv length %d¥n",recvlen);

212if (recvlen < 14) /* ILLEGAL RESPONSE LENGTH CHECK*/

213err_exit("FINS length error");

214if ((fins_cmnd[3] != fins_resp[6]) (fins_cmnd[4] != fins_resp[7])

215(fins_cmnd[5] != fins_resp[8]) )

216{

217/* DESTINATION ADDRESS CHECK*/

218err_exit("illegal source address error");

219}

220

 

221

if(fins_cmnd[9] != fins_resp[9]) /* SID CHECK */

222err_exit("illegal SID error");

223}

224else

225{

226

alarm(0); /* STOP RESPONSE MONITOR TIMER

227err_exit("receive error");

228}

229

 

 

230

 

 

231

/*CLOSE SOCKET

*/

232close(sockfd);

234}

237/*

238* TCP RECEIVE PROCESSING (RECEIVE REPEATED UP TO THE SPECIFIED NUMBER OF BYTES)

239*/

240int tcp_recv(sockfd, buf, len)

241int sockfd;

242unsigned char *buf;

243int len;

244{

190

Page 214
Image 214
Omron CJ1W-ETN21 operation manual 190