Networking Forums

Networking Forums > Computer Networking > Linux Networking > some problem in UDP programming under linux

Reply
Thread Tools Display Modes

some problem in UDP programming under linux

 
 
s9327620@csie.cyut.edu.tw
Guest
Posts: n/a

 
      02-27-2007, 12:16 AM
Dear All :
I have some problem in UDP clinet programming, my source code
under line.

#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<stdlib.h>

#define PORT 65536
#define SERVER_IP "10.l10.138.200"

main()
{
int s,len;
struct sockaddr_in addr;
int addr_len = sizeof(struct sockaddr_in);
char buffer[256];
if ((s = socket(AF_INET, SOCK_DGRAM, 0))<0)
{
perror("socket");
exit(1);
}
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(SERVER_IP);
while(1)
{
bzero(buffer, sizeof(buffer));
len=read(STDIN_FILENO, buffer, sizeof(buffer));
sendto(s, buffer, len, 0, &addr, addr_len);
len = recvfrom(s, buffer, sizeof(buffer), 0, &addr, &addr_len);
printf("receive: %s",buffer);
}
}

But I complier in Red Hat 9 have three bug
udpclient1.C: In function 'int main()'
udpclient1.C:34: cannot convert 'sockaddr_in*' to 'const sockaddr*'
for argument '5' to 'ssize_t sendto(int, const void*, unsigned int,
int, const sockaddr* . unsigned int)'
udpclient1.C:35: cannot convert 'sockaddr_in*' to 'const sockaddr*'
for argument '5' to 'ssize_t recvfrom(int, void*, unsigned int, int,
const sockaddr* . socklen_t*)'

Does somebody have an idea to resolve my problem?
Thank you.

 
Reply With Quote
 
 
 
 
ynotssor
Guest
Posts: n/a

 
      02-27-2007, 01:00 AM
In news:(E-Mail Removed) oups.com,
(E-Mail Removed) <(E-Mail Removed)> wrote:

> I have some problem in UDP clinet programming, my source code
> under line.

....
> #define SERVER_IP "10.l10.138.200"

....
> But I complier in Red Hat 9 have three bug
> udpclient1.C: In function 'int main()'
> udpclient1.C:34: cannot convert 'sockaddr_in*' to 'const sockaddr*'
> for argument '5' to 'ssize_t sendto(int, const void*, unsigned int,
> int, const sockaddr* . unsigned int)'
> udpclient1.C:35: cannot convert 'sockaddr_in*' to 'const sockaddr*'
> for argument '5' to 'ssize_t recvfrom(int, void*, unsigned int, int,
> const sockaddr* . socklen_t*)'
>
> Does somebody have an idea to resolve my problem?


Try fixing the typo in SERVER_IP.
 
Reply With Quote
 
Lew Pitcher
Guest
Posts: n/a

 
      02-27-2007, 01:22 AM
On Feb 26, 8:16 pm, s9327...@csie.cyut.edu.tw wrote:
> Dear All :
> I have some problem in UDP clinet programming, my source code
> under line.
>
> #include<fcntl.h>
> #include<unistd.h>
> #include<sys/types.h>
> #include<sys/socket.h>
> #include<arpa/inet.h>
> #include<netinet/in.h>
> #include<stdlib.h>
>
> #define PORT 65536


/*
** since port numbers range from 1 to 65535,
** the original port number of 65536 is out of range
** and will not work. Use a different port
*/
#define PORT 65534

> #define SERVER_IP "10.l10.138.200"


/*
** The server IP must either be a legal dotted decimal
** number, or a DNS name. The original is neither.
** Use a corrected dotted decimal IP address
*/
#define SERVER_IP "10.10.138.200"


> main()
> {
> int s,len;
> struct sockaddr_in addr;
> int addr_len = sizeof(struct sockaddr_in);
> char buffer[256];
> if ((s = socket(AF_INET, SOCK_DGRAM, 0))<0)
> {
> perror("socket");
> exit(1);}
>
> bzero(&addr, sizeof(addr));
> addr.sin_family = AF_INET;
> addr.sin_port = htons(PORT);
> addr.sin_addr.s_addr = inet_addr(SERVER_IP);
> while(1)
> {
> bzero(buffer, sizeof(buffer));
> len=read(STDIN_FILENO, buffer, sizeof(buffer));
> sendto(s, buffer, len, 0, &addr, addr_len);



/*
** sendto() takes a generic sockaddr pointer, but we have a
** TCP/IP sockaddr_in pointer. Cast the sockaddr_in pointer to
** the generic sockaddr pointer, and continue.
*/
sendto(s, buffer, len, 0, (struct sockaddr *)&addr, addr_len);

> len = recvfrom(s, buffer, sizeof(buffer), 0, &addr, &addr_len);



/*
** recvfrom() takes a generic sockaddr pointer, but we have a
** TCP/IP sockaddr_in pointer. Cast the sockaddr_in pointer to
** the generic sockaddr pointer, and continue.
*/
len = recvfrom(s, buffer, sizeof(buffer), 0 (struct sockaddr
*)&addr, &addr_len);

> printf("receive: %s",buffer);
>
> }
> }
>
> But I complier in Red Hat 9 have three bug
> udpclient1.C: In function 'int main()'
> udpclient1.C:34: cannot convert 'sockaddr_in*' to 'const sockaddr*'
> for argument '5' to 'ssize_t sendto(int, const void*, unsigned int,
> int, const sockaddr* . unsigned int)'
> udpclient1.C:35: cannot convert 'sockaddr_in*' to 'const sockaddr*'
> for argument '5' to 'ssize_t recvfrom(int, void*, unsigned int, int,
> const sockaddr* . socklen_t*)'


HTH
--
Lew

 
Reply With Quote
 
s9327620@csie.cyut.edu.tw
Guest
Posts: n/a

 
      02-27-2007, 01:56 AM
I modify
sendto(s, buffer, len, 0, (struct sockaddr *)&addr, addr_len) and
len = recvfrom(s, buffer, sizeof(buffer), 0 (struct sockaddr *)&addr,
&addr_len) bug , but have some new bug

udpclient1.C: In function 'int main()';
udpclient1.C: 37: invaild conversion from 'int*' to 'socklen_t*'

please help me

 
Reply With Quote
 
David Schwartz
Guest
Posts: n/a

 
      02-27-2007, 03:16 AM
On Feb 26, 6:56 pm, s9327...@csie.cyut.edu.tw wrote:
> I modify
> sendto(s, buffer, len, 0, (struct sockaddr *)&addr, addr_len) and
> len = recvfrom(s, buffer, sizeof(buffer), 0 (struct sockaddr *)&addr,
> &addr_len) bug , but have some new bug
>
> udpclient1.C: In function 'int main()';
> udpclient1.C: 37: invaild conversion from 'int*' to 'socklen_t*'
>
> please help me


You want 'addr_len' to be a 'socklen_t', not an 'int'.

DS

 
Reply With Quote
 
 
 
Reply

Thread Tools
Display Modes

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 Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
linux socket programming and HTTP Protocol Problem PGHULME Linux Networking 1 08-21-2006 09:35 PM
PROGRAMMING MY WIRELESS INTERFACE in linux sam1967 Wireless Internet 2 06-08-2005 06:49 AM
Linux server programming Tes Linux Networking 3 04-26-2004 08:15 AM
linux network programming zm Linux Networking 1 02-09-2004 11:04 PM
linux socket programming sank Linux Networking 2 01-02-2004 05:36 PM



1 2 3 4 5 6 7 8 9 10 11