c++域名怎么获取ip和端口号源程序

 我来答
tattackor
推荐于2016-04-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:883万
展开全部
  1. 利用C++的Socket可以获得ip和端口号

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。

  2. 在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?当sockaddr_in.sin_family = AF_INET时,sockaddr = sockaddr_in。
    据此,我们可以做一下转换,就可以利用 inet_ntoa() 来得到ip地址和端口号了:

    int new_fd = accept(sock, &clientAddr, &sin_size);
    if(new_fd<0)
    {
    char msg[64];
    bzero(msg,sizeof(msg));
    sprintf(msg,"accept failed");
    log::outputSysErr(msg);
    }
    else
    {
    // 将sockaddr强制转换为 sockaddr_in
    sockaddr_in sin;
    memncpy(&sin, &clientAddr, sizoef(sin));
    // 取得ip和端口号
    sprintf(info.ip, inet_ntoa(sin.sin_addr));
    info.port = sin.sin_port;
    info.sock = new_fd;
    }
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
cnnbwhq1972
推荐于2018-03-19 · TA获得超过3843个赞
知道小有建树答主
回答量:488
采纳率:83%
帮助的人:240万
展开全部
/////////////////////////////////////////////////////////////
//根据域名获取IP可行,代码如下:
//author:Wang Hongqi
//email:573827574@qq.com
//date:2014/mar/1
///////////////////////////////////////////////////////////

#include<stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include<string.h>
#include <sys/types.h>
#include <winsock2.h>

#include "iostream"
#pragma comment(lib,"ws2_32.lib")
using namespace std;

int main()
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
hostent *phost=gethostbyname("www.hao123.com");
in_addr addr;
for(int i=0;;i++)
{
char *p=phost->h_addr_list[i];
if(p==NULL)
break;
memcpy(&addr.S_un.S_addr,p,phost->h_length);
char* ip=inet_ntoa(addr);
printf("IP地址为:%s",ip);
}

system("pause");

}

端口号怎么取得(有不固定,即使是WEBSERVER服务器端口号也不一定是80),呵呵!!!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式