stram socket


 
Thread Tools Search this Thread
Top Forums Programming stram socket
# 1  
Old 04-17-2007
stram socket

i am wrtting simple client server program.i am getting some problem in this code.can anyone help me in this code.thanks.


Code:
#include <stdlib.h>
#include <stdio.h>             /* Basic I/O routines          */
#include <sys/types.h>        /* standard system types       */
#include <netinet/in.h>      /* Internet address structures */
#include <sys/socket.h>     /* socket interface functions  */
#include <netdb.h>         /* host to IP resolution       */
#include <unistd.h>


#define portno  6789             /*  default port of host  */


void error(char *msg);
int main(int argc, char *argv[]);

void error(char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
     int serversocket;
     int newsockfd;
     int clilen;  
     char buffer[4096];
     struct sockaddr_in serv_addr, cli_addr;
    
     /*portno = 80;*/
    
     int n;
    
     
   serversocket = socket(AF_INET, SOCK_STREAM, 0);

    if (serversocket < 0)
       {
        error("ERROR opening socket");
       }
       
       
       

         
         bzero((char *) &serv_addr, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = INADDR_ANY;
        /*portno=atoi(argv[1]);*/
         serv_addr.sin_port = htons(portno);
         printf("Socket has port #%d\n", serv_addr.sin_port);
          
   
    
     if (bind(serversocket, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0)
              {
              error("ERROR on binding");
              }
             
             
             
     listen(serversocket,5);
    
   
    
     while (1) {
       
         clilen = sizeof(cli_addr);
       
     newsockfd = accept(serversocket,(struct sockaddr *) &cli_addr, &clilen);
                
     if (newsockfd < 0)
          {
          error("ERROR on accept");
          }
    
    
     n = write(newsockfd, buffer, sizeof(buffer)-1);
    
     if (n < 0)
         {
          error("ERROR writing to socket");
          }
          close(newsockfd);
          }
     return 0;
}


Last edited by Perderabo; 04-18-2007 at 01:33 AM.. Reason: Add code tags for readability.
# 2  
Old 04-18-2007
I have moved this to a more appropriate forum.

You may wish to explain what problems you're experiencing.

Cheers,
ZB
# 3  
Old 04-18-2007
socket error

Hi dear ,
checked your program..
upto me it is working fine on linux machine.
but for next i want to suggest one more thing ..
just show us the type of errors u r facing.
that will be easy to answer .
# 4  
Old 04-18-2007
few things to be noted!

Quote:
listen(serversocket,5);
return value after the listen system call is not checked,
what is the listen call fails ?

when bind call fails, the socket descriptor created in socket call is not closed, which should be closed ( good to close all open descriptors prior calling exit )

the above argument applies to accept call as well.
# 5  
Old 04-18-2007
stream socket

hi all,
thanks for your reply.since i am new to this forum ,that why i posted it in wrong forum.as per suggestion i am giving return value to listen.also i gussed,the problem is in the client program.because when i am running the client program i getting messages
missing hostname
connect: Connection refused
68 exit(1);
(gdb)

i am posting my client program .do you have any suggestion about this.
Code:
#include <stdio.h>		/* Basic I/O routines     */
#include <stdlib.h>
#include <sys/types.h>		/* standard system types  */
#include <sys/socket.h>		/* socket interface functions */
#include <netinet/in.h>			
#include <netdb.h>		 /* host to IP resolution       */
#include <unistd.h>
#include <errno.h>
#include <string.h>

#define portno  6789          /*  default port and host  */
#define MAXDATASIZE 100     /* max number of bytes */


void error(char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int serversocket, numbytes;
    struct sockaddr_in serv_addr;
    struct hostent *server;
    char buffer[MAXDATASIZE];
     int rc;
     
   if (argc < 3)
       {
       fprintf(stderr,"Missing host name\n", argv[0]);
       /*exit(0);*/
       }
       
    
    serversocket = socket(AF_INET, SOCK_STREAM, 0);


    if (serversocket <0)
    {
    perror("socket");
	    exit(1);
     }
   
    
    server = gethostbyname("152.15.92.168");
    if (server == NULL)
     {
        perror("gethostbyname");
	    exit(1);
     }

      serv_addr.sin_family = AF_INET;
      /*bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);*/
       serv_addr.sin_port = htons(portno);
       serv_addr.sin_addr = *((struct in_addr
*)server->h_addr);
	memset(&(serv_addr.sin_zero), '\0', 8);  // zero the
rest of the struct

      rc = connect(serversocket, (struct sockaddr
      *)&serv_addr,sizeof(serv_addr)) ;
      if(rc)
        {
	 perror("connect");
	    exit(1);
	}
	
	if ((numbytes=recv(serversocket, buffer,
MAXDATASIZE-1, 0)) == -1)
	 {
	    		perror("recv");
	    		exit(1);
	 }
		
	buffer[numbytes] = '\0';
	printf("Received: %s",buf);
	//write( 1, buffer,numbytes );
	
	close(serversocket);
	return 0;
    }


	 /*n = send(mysocket,buffer,strlen(buffer),0);

    if (n < 0)
         error("ERROR writing to socket");
	 
	n = read(mysocket,buffer,sizeof(buffer)-1); 
	 if (n < 0)
         error("ERROR reading from socket");

    buffer[n]='\0';  

    close(mysocket);

    printf("%s\n",buffer);

    return 0;
}*/


Last edited by blowtorch; 04-19-2007 at 02:35 AM..
# 6  
Old 04-19-2007
client problem

Code:
#include <stdio.h>
 
/* no need to give comment for this headerif anyone doesn't know  abt stdio.h he/she should not programming in C*/

#include <stdlib.h>
#include <sys/types.h> /* standard system types */
#include <sys/socket.h> /* socket interface functions */
#include <netinet/in.h> /* socket struct and Internet Protocol family proto */
#include <netdb.h> /* host to IP resolution */
#include <unistd.h>  
#include <errno.h>  /* for errno and error codes */
#include <string.h>
#include <arpa/inet.h> /* for inet_addr */

#define portno 6789 /* default port and host */
#define MAXDATASIZE 100 /* max number of bytes */


void error(char *msg)
{
perror(msg);
exit(0);
}

int main(int argc, char *argv[])
{
int serversocket, numbytes;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[MAXDATASIZE];
int rc;

if (argc < 3)
{
fprintf(stderr,"Missing host name\n", argv[0]);
/*exit(0);*/
}


serversocket = socket(AF_INET, SOCK_STREAM, 0);


if (serversocket <0)
{
perror("socket");
exit(1);
}


/*server = gethostbyname("152.15.92.168");
if (server == NULL)
{
perror("gethostbyname");
exit(1);
}*/
//no need to call gethostbyname if we know ip address although we can do it like this 

serv_addr.sin_family = AF_INET;
/*bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);*/
serv_addr.sin_port = htons(portno);
/*serv_addr.sin_addr = *((struct in_addr
*)server->h_addr);*/
serv_addr.sin_addr.s_addr = inet_addr("152.15.92.168");
memset(&(serv_addr.sin_zero), '\0', 8); // zero the
rest of the struct

rc = connect(serversocket, (struct sockaddr
*)&serv_addr,sizeof(serv_addr)) ;
//if(rc)

if(rc == -1 )
{
perror("connect");
exit(1);
}

if ((numbytes=recv(serversocket, buffer,
MAXDATASIZE-1, 0)) == -1)
{
perror("recv");
exit(1);
}

buffer[numbytes] = '\0';
printf("Received: %s",buf);
//write( 1, buffer,numbytes );

close(serversocket);
return 0;
}


/*n = send(mysocket,buffer,strlen(buffer),0);

if (n < 0)
error("ERROR writing to socket");

n = read(mysocket,buffer,sizeof(buffer)-1); 
if (n < 0)
error("ERROR reading from socket");

buffer[n]='\0'; 

close(mysocket);

printf("%s\n",buffer);

return 0;
}*/






just check this program ... not tested but i think it should work

Last edited by blowtorch; 04-19-2007 at 02:35 AM.. Reason: code tags
# 7  
Old 04-19-2007
Guys, please use code tags when posting long code listings. Makes it really hard to read the code otherwise.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. IP Networking

Clarification - Setting socket options at the same time when socket is listening

I need clarification on whether it is okay to set socket options on a listening socket simultaneously when it is being used in an accept() call? Following is the scenario:- -- Task 1 - is executing in a loop - polling a listen socket, lets call it 'fd', (whose file descriptor is global)... (2 Replies)
Discussion started by: jake24
2 Replies

2. Programming

Error with socket operation on non-socket

Dear Experts, i am compiling my code in suse 4.1 which is compiling fine, but at runtime it is showing me for socket programming error no 88 as i searched in errno.h it is telling me socket operation on non socket, what is the meaning of this , how to deal with this error , please... (1 Reply)
Discussion started by: vin_pll
1 Replies

3. Programming

socket function to read a webpage (socket.h)

Why does this socket function only read the first 1440 chars of the stream. Why not the whole stream ? I checked it with gdm and valgrind and everything seems correct... #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include... (3 Replies)
Discussion started by: cyler
3 Replies

4. Programming

which socket should socket option on be set

Hi all, On the server side, one socket is used for listening, the others are used for communicating with the client. My question is: if i want to set option for socket, which socket should be set on? If either can be set, what's the different? Again, what's the different if set option... (1 Reply)
Discussion started by: blademan100
1 Replies

5. UNIX for Advanced & Expert Users

connect problem for sctp socket (ipv6 socket) - Runtime fail Invalid Arguments

Hi, I was porting ipv4 application to ipv6; i was done with TCP transports. Now i am facing problem with SCTp transport at runtime. To test SCTP transport I am using following server and client socket programs. Server program runs fine, but client program fails giving Invalid Arguments for... (0 Replies)
Discussion started by: chandrutiptur
0 Replies

6. IP Networking

IP Socket

Please need to setup a IP Socket on SCO Open Server 5.06 / 5.07 to a Linux machine. Al that I want to do is via a simple shell command open a tcpip address, port number, and send a call to a progam with a name of a file on the linux box. My programming language does not support socket... (1 Reply)
Discussion started by: comcaps
1 Replies

7. UNIX for Dummies Questions & Answers

C socket

I have been serching for a guide to unix C network programming everywhere but I have found only some tuorials, very useful but a little bit poors. My question is if exist a network domain all over the world where C socket is treated with examples. Programs i have looked into is hard to... (4 Replies)
Discussion started by: Davide71
4 Replies

8. Programming

Socket Programming socket

Hello, I actually try to make client-server program. I'm using SCO OpenServer Release 5.0.0 and when I try to compile my code (by TELNET) I've got this error : I'm just using this simple code : and I get the same error if I use : If someone can help me, Thanks (2 Replies)
Discussion started by: soshell
2 Replies

9. UNIX for Dummies Questions & Answers

socket

hi everybody ! i want create server/clients in c++ anyone can give me i little exemple for send a string ? or give me a good site for explain. thx (1 Reply)
Discussion started by: mercutio
1 Replies

10. IP Networking

socket

how to create a socket ? why to bind a socket? when we use a socket? (1 Reply)
Discussion started by: amin
1 Replies
Login or Register to Ask a Question