Sponsored Content
Top Forums Programming Can't I Cast sockaddr to sockaddr_in?! Post 302253502 by f.ben.isaac on Friday 31st of October 2008 07:38:25 PM
Old 10-31-2008
Can't I Cast sockaddr to sockaddr_in?!

I'm trying to grab client's port number, by doing the following code:

Code:
//get client's port number - here we are not dealing with pointers
//because the returned value will be passed as a parameter to htons()
//htons() takes u_short, which is similar to short, parameter
short get_client_port(struct sockaddr clientInformation)
{
    //carries the port number that client connected from
    short portNumber;
    
    //check the family version of client IP address, so you
    //can know where to cast, either to sockaddr_in or sockaddr_in6
    //and then grab the port after casting
    if (clientInformation.sa_family == AF_INET) {
        struct sockaddr_in ipv4 = (struct sockaddr_in)clientInformation;
        portNumber = ipv4.sin_port;
        return portNumber;
    }else{
        struct sockaddr_in6 ipv6 = (struct sockaddr_in6)clientInformation;
        portNumber = ipv6.sin6_port;
        return portNumber;
       }
}

In some point i did this:

Code:
short portNum =  get_client_port(clientInfo);
short portHostByte = ntohs(portNum);
//put portHostByte in a printf()

Why do i get the following errors?

Code:
echo_server.cpp: In function ‘short int get_client_port(sockaddr)':
echo_server.cpp:53: error: no matching function for call to ‘sockaddr_in::sockaddr_in(sockaddr&)'
/usr/include/netinet/in.h:218: note: candidates are: sockaddr_in::sockaddr_in()
/usr/include/netinet/in.h:218: note:                 sockaddr_in::sockaddr_in(const sockaddr_in&)
echo_server.cpp:57: error: no matching function for call to ‘sockaddr_in6::sockaddr_in6(sockaddr&)'
/usr/include/netinet/in.h:232: note: candidates are: sockaddr_in6::sockaddr_in6()
/usr/include/netinet/in.h:232: note:                 sockaddr_in6::sockaddr_in6(const sockaddr_in6&)

Any idea?
 

6 More Discussions You Might Find Interesting

1. Programming

why to use dynamic cast in c++

class base { public: virtual void disp() {cout<<"from base\n";} }; class derv : public base { public: void disp() {cout<<"from der\n";} }; int main() { base *b=new derv; b->disp(); derv *d; d=dynamic_cast<derv*>(b); d->disp(); return(0); (0 Replies)
Discussion started by: sarwan
0 Replies

2. Programming

Help - Cast converts default int return type

What does the warning message 724 "Cast converts default int return type to." tell me. I am new to C. (used it some in college). We are migrating our c-code to 10.2.0.3.0. The programs compiled clean. However there were several warning messages that kick out. The most prominent warning is: ... (5 Replies)
Discussion started by: rtgreen
5 Replies

3. Red Hat

cast from const void* to unsigned int loses precision

Hello everey one, here i am attempting to compile a c++ project .it's throughing the following errors. my machine details are as follows: Linux chmclozr0119 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:19 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux errors: ===== Generating... (0 Replies)
Discussion started by: mannam srinivas
0 Replies

4. Programming

`strcat' makes pointer from integer without a cast

A question to ask. seq1 = "eeeeeeeeeeeeeeeeee"; seq2 = "dddddddddddddddddddd"; char a = '*'; strcat(*seq2, &a); strcat(*seq1, seq2); compilation warning: passing arg 1 of `strcat' makes pointer from integer without a cast thanks (4 Replies)
Discussion started by: cdbug
4 Replies

5. Programming

warning: passing arg 1 of `inet_addr' makes pointer from integer without a cast

I use solaris10,following is tcp client code: #include "cliserv.h" int main(int argc,char argv){ struct sockaddr_in serv; char request,reply; int sockfd,n; if(argc!=2) err_quit("usage: tcpclient <IP address of server>"); if((sockfd=socket(PF_INET,SOCK_STREAM,0))<0) ... (1 Reply)
Discussion started by: konvalo
1 Replies

6. Programming

Cast from String to char

Hello, This is my code: i'd like to like to add getenv("MYLIB") in the first case of my buffer inside of '1' , should i do the cast ? and how please ? Thank you. (1 Reply)
Discussion started by: chercheur857
1 Replies
XvGrabPort(3)							  libXv Functions						     XvGrabPort(3)

NAME
XvGrabPort - lock port for exclusive use by client SYNOPSIS
#include <X11/extensions/Xvlib.h> int XvGrabPort(Display *dpy, XvPortID port, Time time); ARGUMENTS
dpy Specifies the connection to the X server. port Defines the port to be grabbed. time Specifies the request timestamp. DESCRIPTION
XvGrabPort(3) grabs a port. Once a client grabs a port, only that client can make video requests to that port. If the time is before the current port time, the XvGrabPort request is ignored and XvInvalidTime is returned. If the port is already grabbed by another client, XvAlreadyGrabbed is returned. Otherwise it returns a status of Success. The port time is updated when the fol- lowing requests are processed: XvGrabPort(3), XvUngrabPort(3), XvPutVideo(3), XvPutStill(3), XvGetVideo(3), XvGetStill(3). If the port is actively processing video for another client, the video is preempted, and an XvVideoNotify event with detail XvPreempted is generated for its drawable. RETURN VALUES
[Success] Returned if XvGrabPort(3) completed successfully. [XvInvalidTime] Returned if requested time is older than the current port time. [XvAlreadyGrabbed] Returned if the port is already grabbed by another client. [XvBadExtension] Returned if the Xv extension is unavailable. [XvBadAlloc] Returned if XvGrabPort(3) failed to allocate memory to process the request. DIAGNOSTICS
[XvBadPort] Generated if the requested port does not exist. SEE ALSO
XvUngrabPort(3), XvVideoNotify(3) X Version 11 libXv 1.0.7 XvGrabPort(3)
All times are GMT -4. The time now is 08:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy