13#include <sys/socket.h>
14#include <netinet/in.h>
15#include <netinet/tcp.h>
85 struct sockaddr_in serverAddr;
96 switch (crate_number) {
125 test = setsockopt (
gSocketFd, IPPROTO_TCP, TCP_NODELAY,
130 test = setsockopt(
gSocketFd, SOL_SOCKET, SO_REUSEADDR, &optval,
sizeof(optval));
135 sockAddrSize =
sizeof (
struct sockaddr_in);
136 bzero ((
char *) &serverAddr, sockAddrSize);
137 serverAddr.sin_family = PF_INET;
140 if ((serverAddr.sin_addr.s_addr = inet_addr (servername)) ==
SOCK_ERROR)
142 perror (
"unknown server name");
184 nWrite = send (
gSocketFd, (
char *) myRequest,
sizeof (*myRequest), 0);
185 if ( nWrite !=
sizeof(*myRequest) )
187 printf (
"cfSockCli WARN: nWrite = %d, sizeof (*myRequest) = %d\n",
188 nWrite,
sizeof (*myRequest) );
189 perror (
"Connection aborted on error");
194 if (myRequest->
reply)
196 i = recv (
gSocketFd, (
char *) serverReply,
sizeof(*serverReply), 0 );
200 perror (
"Error reading result\n");
217 while ( i <
sizeof(*serverReply) ) {
218 j = recv(
gSocketFd, ((
char *) serverReply)+i,
sizeof(*serverReply)-i, 0 );
221 perror (
"Error reading result\n");
278 long command_type,
long command,
279 long req_param,
long req_param_2,
280 char *reply,
char *msg )
291 myRequest.
par1 = htonl(req_param);
292 myRequest.
par2 = htonl(req_param_2);
296 case 'Y': myRequest.
reply = TRUE;
303 myRequest.
msgLen = htonl(mlen);
304 myRequest.
message[mlen] =
'\0';
315 errFlag =
cfSockCli(crate_number,&myRequest,&serverReply);
316 if (errFlag !=
SOCK_OK)
return errFlag;
319 if (myRequest.
reply) {
323 req_param = htonl(serverReply.
par1);
324 req_param_2 = htonl(serverReply.
par2);
347 myRequest.
par1 = htonl(gRequest->
par1);
348 myRequest.
par2 = htonl(gRequest->
par2);
350 switch (*(gRequest->
reply))
353 case 'Y': myRequest.
reply = TRUE;
358 mlen = strlen(gRequest->
message);
360 myRequest.
msgLen = htonl(mlen);
361 myRequest.
message[mlen] =
'\0';
371 errFlag =
cfSockCli(crate_number, &myRequest,&serverReply);
373 if (errFlag !=
SOCK_OK)
return errFlag;
376 if (myRequest.
reply) {
381 gRequest->
par1 = htonl(serverReply.
par1);
382 gRequest->
par2 = htonl(serverReply.
par2);
399 printf (
"Message to send: \n");
401 myRequest->
msgLen = htonl(mlen);
402 myRequest->
message[mlen - 1] =
'\0';
405 printf(
"your command type will be: %d \n",ntohl(myRequest->
command_type));
406 myRequest->
command = htonl(10);
407 printf(
"your command will be: %d \n",ntohl(myRequest->
command));
409 printf(
"your magic_cookie will be: %d \n",ntohl(myRequest->
magic_cookie));
410 myRequest->
par1 = htonl(1);
411 printf(
"your request param_1 will be: %d \n",ntohl(myRequest->
par1));
412 myRequest->
par2 = htonl(2);
413 printf(
"your request param_2 will be: %d \n",ntohl(myRequest->
par2));
416 printf (
"Would you like a reply (Y or N): \n");
421 case 'Y': myRequest->
reply = TRUE;
430 printf (
"MESSAGE FROM SERVER:\n%s\n", serverReply->
message);
431 printf(
"Server reply command type: %d \n",ntohl(serverReply->
command_type));
432 printf(
"Server reply command: %d \n",ntohl(serverReply->
command));
433 printf(
"Server reply param_1: %d \n",ntohl(serverReply->
par1));
434 printf(
"Server reply param_2: %d \n",ntohl(serverReply->
par2));
435 printf(
"Server reply msgLen: %d \n",ntohl(serverReply->
msgLen));
char * ServerName_QwTSCrate
char * ServerName_RightSpect
char * ServerName_Injector
char * ServerName_CountingHouse
char * ServerName_LeftSpect
#define Crate_CountingHouse
static int gSocketKeepOpen
void buildRequestInteractive(struct request *myRequest)
int cfSockCommand(int crate_number, long command_type, long command, long req_param, long req_param_2, char *reply, char *msg)
int GreenSockCommand(int crate_number, struct greenRequest *gRequest)
void handleReplyInteractive(struct request *serverReply)
int cfSockCliOpen(int crate_number, int keepopen)
int cfSockCli(int crate_number, struct request *myRequest, struct request *serverReply)
int cfSockCliSend(int crate_number, struct request *myRequest, struct request *serverReply)
char message[REQUEST_MSG_SIZE]
char message[GREEN_REQUEST_MSG_SIZE]