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&)
I got it....Its too simple :-), i don't know how i did not get it from the first time! Being blank is not a good thing...
Here it is:
Code:
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;
}
}
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)
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)
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)
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)