44#include <sys/socket.h>
45#include <netinet/in.h>
51void error_exit(
const char *msg) {
57int process_command(
char *buffer,
int sockfd) {
60 n =
write(sockfd, buffer, strlen(buffer));
62 error_exit(
"ERROR writing to socket");
64 memset(buffer, 0, BUFLEN);
65 n =
read(sockfd, buffer, BUFLEN - 1);
67 error_exit(
"ERROR reading from socket");
69 printf(
"%s\n", buffer);
74int main(
int argc,
char *argv[]) {
75 int sockfd, portno, arg_index;
76 struct sockaddr_in serv_addr;
77 struct hostent *server;
83 fprintf(stderr,
"Usage: %s <hostname> <port> [<command> [<command> ...]]\n", argv[0]);
87 portno = atoi(argv[2]);
88 sockfd = socket(AF_INET, SOCK_STREAM, 0);
90 error_exit(
"ERROR opening socket");
92 server = gethostbyname(argv[1]);
94 fprintf(stderr,
"ERROR, no such host\n");
98 memset(&serv_addr, 0,
sizeof(serv_addr));
99 serv_addr.sin_family = AF_INET;
100 memcpy(&serv_addr.sin_addr.s_addr, server->h_addr, server->h_length);
101 serv_addr.sin_port = htons(portno);
103 if (connect(sockfd, (
struct sockaddr *)&serv_addr,
sizeof(serv_addr)) < 0)
104 error_exit(
"ERROR connecting");
106 for (arg_index = 3; persist && arg_index < argc; arg_index++) {
107 if (snprintf(buffer, BUFLEN,
"%s\n", argv[arg_index]) >= BUFLEN) {
108 fprintf(stderr,
"ERROR: Command too long\n");
112 if (strcmp(buffer,
"disconnect\n") == 0)
115 printf(
"Processing command: %s", buffer);
118 process_command(buffer, sockfd);
122 printf(
"Please enter the message: ");
125 memset(buffer, 0, BUFLEN);
126 if (fgets(buffer, BUFLEN - 1, stdin) == NULL)
129 if (strcmp(buffer,
"disconnect\n") == 0)
132 process_command(buffer, sockfd);
write(SddsFile sdds_file, output_file)
Mostly backward compatible with the PyLHC sdds module write() function.
SddsFile read(input_file)
Mostly backward compatible with the PyLHC sdds module read() function.