The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Special Forums > IP Networking
.
google unix.com



IP Networking Learn TCP/IP, Internet Protocol, Routing, Routers, Network protocols in this UNIX and Linux forum.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
need help with sockets crunchyuser High Level Programming 1 10-01-2008 05:55 AM
HELP!! TLI vs Sockets? adiaconou UNIX for Dummies Questions & Answers 1 06-11-2007 01:30 AM
Sockets in use kjbaumann SUN Solaris 1 07-14-2006 03:06 PM
sockets kirpond UNIX for Dummies Questions & Answers 2 05-22-2006 01:57 PM
sockets... devy8 High Level Programming 1 07-02-2001 10:14 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-16-2006
strider strider is offline
Registered User
  
 

Join Date: Jan 2006
Posts: 16
UDP sockets

hi...
i have made this client server prog with UDP sockets but im not getting the output. the client sends the message but the server just keeps on waiting. Im running the prog an a solaris 10 box...

server:
main() { int sd; struct sockaddr_in server; char buf[512]; int rc,len; server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(1234); sd = socket (AF_INET,SOCK_DGRAM,0); if(bind ( sd, &server, sizeof(server))==-1) printf("error\n"); else printf("ok\n"); len=sizeof(server); printf("check\n"); printf("check1\n"); rc = recvfrom (sd, &buf[0], 2, 0,&server, &len); printf("check2\n"); buf[rc]= '\0'; printf("Received: %s\n", buf); }
Code:
main()
{
   	int   sd;
	struct   sockaddr_in server;
	char buf[512];
	int rc,len;

	server.sin_family = AF_INET;
   	server.sin_addr.s_addr = htonl(INADDR_ANY);
   	server.sin_port = htons(1234);

   	sd = socket (AF_INET,SOCK_DGRAM,0);

  	if(bind ( sd, &server, sizeof(server))==-1)
		printf("error\n");
	else
		printf("ok\n");

 	len=sizeof(server);
	printf("check\n");
   
    	printf("check1\n");
      	rc = recvfrom (sd, &buf[0], 2, 0,&server, &len);
      	printf("check2\n");
      	buf[rc]= '\0';
      	printf("Received: %s\n", buf);
}
        
-->
Code:
main()
{
   	int   sd;
	struct   sockaddr_in server;
	char buf[512];
	int rc,len;

	server.sin_family = AF_INET;
   	server.sin_addr.s_addr = htonl(INADDR_ANY);
   	server.sin_port = htons(1234);

   	sd = socket (AF_INET,SOCK_DGRAM,0);

  	if(bind ( sd, &server, sizeof(server))==-1)
		printf("error\n");
	else
		printf("ok\n");

 	len=sizeof(server);
	printf("check\n");
   
    	printf("check1\n");
      	rc = recvfrom (sd, &buf[0], 2, 0,&server, &len);
      	printf("check2\n");
      	buf[rc]= '\0';
      	printf("Received: %s\n", buf);
}
client
main() { int sd,a; struct sockaddr_in server; sd = socket (AF_INET,SOCK_DGRAM,0); server.sin_family = AF_INET; server.sin_addr.s_addr=htonl("127.0.0.1"); server.sin_port = htons(1234); a=sendto(sd, "HI",2, 0,&server, sizeof(server)); printf("sent=%d\n",a); exit(0); }
Code:
main()
{

        int	sd,a;
	struct	sockaddr_in server;

	sd = socket (AF_INET,SOCK_DGRAM,0);

	server.sin_family = AF_INET;
	server.sin_addr.s_addr=htonl("127.0.0.1");
	server.sin_port = htons(1234);

	a=sendto(sd, "HI",2, 0,&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}
        
-->
Code:
main()
{

        int	sd,a;
	struct	sockaddr_in server;

	sd = socket (AF_INET,SOCK_DGRAM,0);

	server.sin_family = AF_INET;
	server.sin_addr.s_addr=htonl("127.0.0.1");
	server.sin_port = htons(1234);

	a=sendto(sd, "HI",2, 0,&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}
  #2 (permalink)  
Old 03-16-2006
Rakesh Ranjan's Avatar
Rakesh Ranjan Rakesh Ranjan is offline
Registered User
  
 

Join Date: Aug 2005
Location: India
Posts: 42
Hi strider u made few small mistakes in ur program that I'm listing down:

1) U need not convert INADDR_ANY to network long
2) In client side u may use inet_aton() to convert client IP address (that u have taken as 127.0.0.1) to in_addr struct

Apart from above I would also like to suggest u two more things that might b helpful

1) In ur server side prog u have used server structure (sockaddr_in server) to store server address as well as the address of connecting clients in 2nd last arg of recvfrom()
2) U can avoid warnings if u type cast pointer to sockaddr_in structure to sockaddr* in bind,sendto and recvfrom.

Now I enlist the rectified code

//server main() { int sd; struct sockaddr_in server,clients; char buf[512]; int rc,len; server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(1234); sd = socket (AF_INET,SOCK_DGRAM,0); if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1) printf("error\n"); else printf("ok\n"); len=sizeof(clients); printf("check\n"); printf("check1\n"); rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len); printf("check2\n"); buf[rc]= '\0'; printf("Received: %s\n", buf); return 0; } //client main() { int sd,a; struct sockaddr_in server; sd = socket (AF_INET,SOCK_DGRAM,0); server.sin_family = AF_INET; inet_aton("127.0.0.1",&(server.sin_addr)); server.sin_port = htons(1234); a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server)); printf("sent=%d\n",a); exit(0); }
Code:
//server
main()
{
        int   sd;
        struct   sockaddr_in server,clients;
        char buf[512];
        int rc,len;

        server.sin_family = AF_INET;
        server.sin_addr.s_addr = INADDR_ANY;
        server.sin_port = htons(1234);

        sd = socket (AF_INET,SOCK_DGRAM,0);

        if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
                printf("error\n");
        else
                printf("ok\n");

        len=sizeof(clients);
        printf("check\n");

        printf("check1\n");
        rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
        printf("check2\n");
        buf[rc]= '\0';
        printf("Received: %s\n", buf);
        return 0;
}


//client
main()
{

        int     sd,a;
        struct  sockaddr_in server;

        sd = socket (AF_INET,SOCK_DGRAM,0);

        server.sin_family = AF_INET;
        inet_aton("127.0.0.1",&(server.sin_addr));
        server.sin_port = htons(1234);

        a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}
        
-->
Code:
//server
main()
{
        int   sd;
        struct   sockaddr_in server,clients;
        char buf[512];
        int rc,len;

        server.sin_family = AF_INET;
        server.sin_addr.s_addr = INADDR_ANY;
        server.sin_port = htons(1234);

        sd = socket (AF_INET,SOCK_DGRAM,0);

        if(bind ( sd, (struct sockaddr*)&server, sizeof(server))==-1)
                printf("error\n");
        else
                printf("ok\n");

        len=sizeof(clients);
        printf("check\n");

        printf("check1\n");
        rc = recvfrom (sd, &buf, 2, 0,(struct sockaddr*)&clients, &len);
        printf("check2\n");
        buf[rc]= '\0';
        printf("Received: %s\n", buf);
        return 0;
}


//client
main()
{

        int     sd,a;
        struct  sockaddr_in server;

        sd = socket (AF_INET,SOCK_DGRAM,0);

        server.sin_family = AF_INET;
        inet_aton("127.0.0.1",&(server.sin_addr));
        server.sin_port = htons(1234);

        a=sendto(sd, "HI",2, 0,(struct sockaddr*)&server, sizeof(server));
        printf("sent=%d\n",a);
        exit(0);

}
Tell me if this worked for u or not esp. because i've tested it on Linux.
  #3 (permalink)  
Old 03-16-2006
strider strider is offline
Registered User
  
 

Join Date: Jan 2006
Posts: 16
thanks buddy... it worked just fine!
cheers!
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 07:41 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0