Client-Server Data Read Problem
Hi All,
I'm trying to reading in data from a file and send that data to a server, but I'm getting a data read error. Here's the following error:
$ gcc *Client* -o *Client*
udpClient.c: In function `main':
udpClient.c:76: warning: comparison between pointer and integer
Undefined first referenced
symbol in file
socket /var/tmp/cc05IzIT1.o
gethostbyname /var/tmp/cc05IzIT1.o
bind /var/tmp/cc05IzIT1.o
sendto /var/tmp/cc05IzIT1.o
inet_ntoa /var/tmp/cc05IzIT1.o
ld: fatal: Symbol referencing errors. No output written to udpClient.c
$
No output written to the client file.
Here's the code for the client file. It's a little lengthy. Any help would be appreciated:
Code:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h> /* memset */
#include <sys/time.h> /* select() */
#define REMOTE_SERVER_PORT 4500
#define MAX_MSG 100
// ----------------------------------
// --------- MAIN -------------------
// ----------------------------------
int main (int argc, char *argv[])
{
int sd, rc, i;
struct sockaddr_in cliAddr, remoteServAddr;
struct hostent *h;
// Get Data
FILE *data;
char c;
data = fopen("data.txt", "t");
// check command line arguments
if (argc < 3)
{
printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]);
exit(1);
}
// get server IP address (no check if input is IP address or DNS name)
h = gethostbyname(argv[1]);
if (h == NULL)
{
printf("%s: unkown host '%s' \n", argv[0], argv[1]);
exit(1);
}
printf("%s: sending data to '%s' (IP: %s) \n", argv[0], h->h_name, inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));
remoteServAddr.sin_family = h->h_addrtype;
memcpy((char *) &remoteServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length);
remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);
// socket creation
sd = socket(AF_INET, SOCK_DGRAM, 0);
if (sd > 0)
{
printf("%s: cannot open socket \n", argv[0]);
exit(1);
}
// bind any port
cliAddr.sin_family = AF_INET;
cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);
cliAddr.sin_port = htons(4502);
rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr));
if (rc < 0)
{
printf("%s: cannot bind port \n", argv[0]);
exit(1);
}
// send data
for (i = 2; 1 < argv[i]; i++)
{
if (data == NULL) printf("File doesn't exist\n");
else {
do {
c = getc(data); /* get one character from the file */
putchar(c); /* display it on the monitor */
rc = sendto(sd, argv[i], strlen(argv[i]) + 1, 0, (struct sockaddr *) &remoteServAddr, sizeof(remoteServAddr));
} while (c != EOF); /* repeat until EOF (end of file) */
}
if (rc < 0)
{
printf("%s: cannot send data \n", argv[0]);
close(sd);
exit(1);
}
}
return 1;
}
Thanks