this code hangs at line:
Code:
if (connect(serverSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) < 0)
complete code:
Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
char *ip;
char filename[32];
char buffer[256];
unsigned short port;
int serverSocket;
unsigned long filesize;
FILE *readFile, *writeFile;
struct sockaddr_in serverAddr;
char done;
int main (int argc, const char * argv[]) {
printf("rev: 2\n");
if (argc > 1)
{
ip = malloc(15*sizeof(char));
strncpy(ip, argv[1], sizeof(ip));
if (argc > 2)
port = atoi(argv[2]);
else
{
printf("Usage: fEcho [ip] [port]\n--using: %s:65530\n", ip);
port = 65530;
}
}
else
{
ip = malloc(15*sizeof(char));
ip = "127.0.0.1";
port = 65530;
printf("Usage: fEcho [ip] [port]\n--using: %s:%d\n", ip, port);
}
printf("Filename: ");
scanf("%s", filename);
fflush(stdouot);
readFile = fopen(filename, "r");
strcat(filename, ".copy");
writeFile = fopen(filename, "w");
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
serverAddr.sin_addr.s_addr = htonl(inet_addr(ip));
if (ip != NULL)
{
// free(ip);
ip = NULL;
}
serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket < 0)
{
printf("Error creating socket\n");
exit(1);
}
if (connect(serverSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) < 0)
{
printf("Error: connect()\n");
exit(1);
}
for(;;)
{
printf("Tranfering file:", stdout);
while(fgets(buffer, sizeof(buffer), readFile) != NULL)
{
send(serverSocket, &buffer, sizeof(buffer), 0);
//printf(".");
memset(&buffer, 0, sizeof(buffer));
listen(serverSocket, 1);
recv(serverSocket, &buffer, sizeof(buffer), 0);
//printf(".");
fprintf(writeFile, "%s", buffer);
}
fclose(writeFile);
fclose(readFile);
printf("Next file['q' to quit]:");
scanf("%s", filename);
if (strcmp(filename, "q") == 0)
{
close(serverSocket);
return(0);
}
readFile = fopen(filename, "r");
strcat(filename, ".copy");
writeFile = fopen(filename, "w");
}
return(0);
}
I'm just absolutely baffled...
TIA