socket programming error

sanda199 (25)
Hi everyone, I got errors when I compiled my server and client program.
This is my server program. I am also using ubuntu 11.10.

#include <netdb.h>
#include <netinet/in.h>
#include <string.h>
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <arpa/inet.h>

#define PORT 4547

/*int parseARGS(char **args, char *line)
{
int tmp = 0;
args[tmp] = strtok(line, ":" );
while ((args[++tmp] = strtok(NULL, ":" )) != NULL);
return tmp -1;
}*/

int main(int argc, char *argv[])
{
//char *header[4096];
int listenSOCKET;
int connectSOCKET;
socklen_t clientADDRESSLENGTH;
struct sockaddr_in clientADDRESS, serverADDRESS;
char recvBUFF[4096];
//Image *recv_img;
//char *filename, *filesize;
//FILE *recvFILE;
//int received = 0;
//char tempstr[4096];

//int count1=1, count2=1, percent;

listenSOCKET = socket(AF_INET, SOCK_STREAM, 0);
if (listenSOCKET <0)
{
printf("Cannot create socket\n");
close(listenSOCKET);
return 1;
}
//PORT = atoi(argv[1]);
serverADDRESS.sin_family = AF_INET;
serverADDRESS.sin_addr.s_addr = inet_addr("172.17.111.3");
serverADDRESS.sin_port = htons(PORT);

if (bind(listenSOCKET, (struct sockaddr *)&serverADDRESS, sizeof(serverADDRESS))<0)
{
printf("Cannot bind socket\n");
close(listenSOCKET);
return 1;
}

listen(listenSOCKET, 5);
clientADDRESSLENGTH = sizeof(clientADDRESS);
connectSOCKET = accept(listenSOCKET,(struct sockaddr *)&clientADDRESS, &clientADDRESSLENGTH);
if (connectSOCKET<0)
{
printf("Cannot accpet connection\n");
close(listenSOCKET);
return 1;
}
bzero(recvBUFF,4096);
while(1)
{
if(recv(connectSOCKET,recvBUFF,1,0) == 0)
printf("ERROR on receiving");
//memcpy(recv_img,recvBUFF, sizeof(recvBUFF));

close(listenSOCKET);
return 0;
}
}

I got an error like cannot bind socket.
I run the program like ./server4.o 4547.
why is that so? If anyone know how to solve it. pls kindly tell me. thanks
HiteshVaghani1 (207)
Are you running client and server on the same PC...?
sanda199 (25)
no different pc
HiteshVaghani1 (207)
Instead of this,
serverADDRESS.sin_addr.s_addr = inet_addr("172.17.111.3");

please use local address this will solve your problem..
serverADDRESS.sin_addr.s_addr = inet_addr("127.0.0.1");
Last edited on
Registered users can post here. Sign in or register to post.