User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Linux Servers and Apache section within the Tech Talk category of DaniWeb, a massive community of 391,980 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 4,132 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Linux Servers and Apache advertiser:

socket programing in linux

Join Date: Feb 2008
Posts: 10
Reputation: shrutijadhav is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
shrutijadhav shrutijadhav is offline Offline
Newbie Poster

socket programing in linux

  #1  
May 7th, 2008
i am trying socket programming in linux(fedora 7) using C language.
i want to send a buffer from server to client,and vice versa.
but the contents are not getting saved.the contents are unsigned long so i am converting them into ascii usinf sprintf and then saving in buffer.but its not getting saved.it shows that buffer is empty.please help me.

my attachin code.

SERVER SIDE:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<netdb.h>

#define MYPORT 3490




int main()
{
int result,result1;
int sockfd;

struct sockaddr_in my_addr;

char buffer[40];
char req_buffer[40];

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
printf("Creating socket error\n");
//return -1;
}
printf("\n socket created\n");

my_addr.sin_family = AF_INET; // host byte order
my_addr.sin_port = htons(MYPORT); // short, network byte order
my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my IP
memset(&(my_addr.sin_zero), '\0', 8);

printf("\nsdsd\n");


if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)
{
perror("bind");
exit(1);
}
printf("\n bind successfull\n");

if (listen(sockfd,15) == -1)
{
perror("listen");
exit(1);
}
printf("\n listen successfull\n");

struct sockaddr_in hisaddr;
int acceptfd;
socklen_t addrlen;


while (1)
{

acceptfd = accept(sockfd,(struct sockaddr *)&hisaddr, &addrlen);
if(acceptfd < 0)
{
printf("Error accepting on the socket %d\n");
continue;
}
printf("%s: Accepted Connection\n");



unsigned long p,g,SA,SB,TA,TB;

p=32;
sprintf(buffer[0],"%d",p);

q=4
sprintf(buffer[1],"%d",g);

TA=100;
sprintf(buffer[2],"%d",TA);


result1 = send(acceptfd, buffer,14, 0);


if(result<0)
{
printf("\n error while sending from serv-cli");
}
printf("\n send success from serv-cli");*/

result1 = recv(acceptfd, req_buffer, 1024, 0);
if(result1 < 0)
{
printf("Error reading on the socket %d\n");

continue;
}
req_buffer[result1] = '\0';
printf("\nReceived: %s\n",req_buffer);

close(acceptfd);

}
close(sockfd);
return 0;
}


CILENT SIDE

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<netdb.h>

#define SERV_PORT 3490


int main(int argc,char *argv[])
{
int servsock,result,receive;
char buffer[40];

struct sockaddr_in servaddr;
struct hostent *he;


if (argc != 2)
{
fprintf(stderr,"usage: client hostname\n");
exit(1);
}
if ((he=gethostbyname(argv[1])) == NULL) // get the host info
{
herror("gethostbyname");
exit(1);
}

servsock = socket(AF_INET, SOCK_STREAM, 0);
if(servsock < 0)
{
printf("Error creating socket connecting to server\n");

}

servaddr.sin_family = AF_INET;
servaddr.sin_addr = *((struct in_addr *)he->h_addr);
servaddr.sin_port = htons(SERV_PORT);

memset(&(servaddr.sin_zero), '\0',8);

result = connect(servsock, (struct sockaddr *)&servaddr, sizeof(servaddr));
if(result < 0) {
printf("Error connecting to server \n");
}


char buf[40];
unsigned long p,g,SA,SB,TA,TB;
int numbytes,i=0;
while(1)
{
if ((numbytes=recv(servsock, buf, 14, 0)) == -1)
{
perror("recv");
exit(1);
}
buf[numbytes] = '\0';

printf("\n Received: %s\n",buf);
printf("numbytes= %d",numbytes);


sscanf(buf[0],"%ld",&p);
sscanf(buf[1],"%ld",&g);
sscanf(buf[2],"%ld",&TA);




printf("p: %d\n g: %d\n TA: %d\n",p,g,TA);




printf("enter data to send");
scanf("%s",buffer);
result = send(servsock, buffer, 14, 0);
if(result<0)
{
printf("\n error while sending from cli-serv");
}
printf("\n send success from cli-serv");

}
close(servsock);

return 0;
}
AddThis Social Bookmark Button
Reply With Quote  
All times are GMT -4. The time now is 9:38 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC