|
Here's an example of how to determine the port in use at the other end of a
socket connection...
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <netdb.h>
int main(void)
{
int theSocket, structLen;
short thePort = 0;
struct servent *se;
struct sockaddr_in rmtAddr;
struct sockaddr_in lclAddr;
char myInetAddr[256] = "127.0.0.1";
se = getservbyname( "telnet", "tcp");
if (se)
{
thePort = htons(se->s_port);
}
memset(&rmtAddr, 0, sizeof(rmtAddr));
rmtAddr.sin_family = AF_INET;
rmtAddr.sin_addr.s_addr = inet_addr(myInetAddr);
rmtAddr.sin_port = htons(thePort);
if ( (theSocket = socket(AF_INET, SOCK_STREAM, 0 )) < 0 )
{
printf("Could not open socket\n");
return -1;
}
if (connect(theSocket, (struct sockaddr *) &rmtAddr,
sizeof(rmtAddr)) < 0 )
{
printf("Cannot connect to telnet Server\n");
close(theSocket);
return -1;
}
/*-- let's get the local socket info --*/
memset(&lclAddr, 0, sizeof(lclAddr));
structLen = sizeof(lclAddr);
if (getsockname( theSocket, (struct sockaddr *)&lclAddr, &structLen) <
0 )
{
printf("Failed to get local socket info\n");
close(theSocket);
return -1;
}
else
{
printf("Connected to server's remote port %d, using local port
%d\n",
rmtAddr.sin_port, lclAddr.sin_port);
}
close(theSocket);
return 0;
}
+---
| This is the C/400 Mailing List!
| To submit a new message, send your mail to C400-L@midrange.com.
| To subscribe to this list send email to C400-L-SUB@midrange.com.
| To unsubscribe from this list send email to C400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: bob@cstoneindy.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.