精华内容
下载资源
问答
  • 获取本机ip获取远程ip

    千次阅读 2015-11-09 17:10:33
    getsockname与getpeername是返回套接口关联的本地协议地址和远程协议地址。 int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen); int getpeername(int sockfd, struct sockaddr *...
    getsockname与getpeername是返回套接口关联的本地协议地址和远程协议地址。 
    

    int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen);

    int getpeername(int sockfd, struct sockaddr * peeraddr, socken_t * addrlen);

    返回0表示成功,返回1表示出错

    参数sockfd表示你要获取的套接口的描述字。

    localaddr返回本地协议地址描述结构, peeraddr返回远程协议地址描述结构,addrlen分别是上述2个结构的长度。


    补充:getsockname和getpeername调度时机很重要,如果调用时机不对,则无法正确获得地址和端口。

    TCP

    对于服务器来说,在bind以后就可以调用getsockname来获取本地地址和端口,虽然这没有什么太多的意义。getpeername只有在链接建立以后才调用,否则不能正确获得对方地址和端口,所以他的参数描述字一般是链接描述字而非监听套接口描述字。

    对于客户端来说,在调用socket时候内核还不会分配IP和端口,此时调用getsockname不会获得正确的端口和地址(当然链接没建立更不可能调用getpeername),当然如果调用了bind 以后可以使用getsockname。想要正确的到对方地址(一般客户端不需要这个功能),则必须在链接建立以后,同样链接建立以后,此时客户端地址和端口就已经被指定,此时是调用getsockname的时机。

    UDP

    UDP分为链接和没有链接2种(这个到UDP与connect可以找到相关内容)

    没有链接的UDP不能调用getpeername,但是可以调用getsockname,和TCP一样,他的地址和端口不是在调用socket就指定了,而是在第一次调用sendto函数以后

    已经链接的UDP,在调用connect以后,这2个函数都是可以用的(同样,getpeername也没太大意义。如果你不知道对方的地址和端口,不可能会调用connect)。

    例如:

    /*服务器端*/
    #define MAXLINE 4096
    #define PORT 6563
    #define LISTENQ 1024
    #include<stdio.h>
    #include<sys/socket.h>
    #include<netinet/in.h>
    #include<unistd.h>
    #include<string.h>
    #include<arpa/inet.h>
    
    int main() {
      int listenfd, connfd;
      struct sockaddr_in servaddr;//服务器绑定的地址
      struct sockaddr_in listendAddr, connectedAddr, peerAddr;//分别表示监听的地址,连接的本地地址,连接的对端地址
      int listendAddrLen, connectedAddrLen, peerLen;
      char ipAddr[INET_ADDRSTRLEN];//保存点分十进制的地址
      listenfd = socket(AF_INET, SOCK_STREAM, 0);
      memset(&servaddr, 0, sizeof(servaddr));
    
      servaddr.sin_family = AF_INET;
      servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
      servaddr.sin_port = htons(PORT);
      
      bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));//服务器端绑定地址
    
      listen(listenfd, LISTENQ);
      listendAddrLen = sizeof(listendAddr);
      getsockname(listenfd, (struct sockaddr *)&listendAddr, &listendAddrLen);//获取监听的地址和端口
      printf("listen address = %s:%d\n", inet_ntoa(listendAddr.sin_addr), ntohs(listendAddr.sin_port));
    
      while(1) {
        connfd = accept(listenfd, (struct sockaddr *)NULL, NULL);
        connectedAddrLen = sizeof(connectedAddr);
        getsockname(connfd, (struct sockaddr *)&connectedAddr, &connectedAddrLen);//获取connfd表示的连接上的本地地址
        printf("connected server address = %s:%d\n", inet_ntoa(connectedAddr.sin_addr), ntohs(connectedAddr.sin_port));
        getpeername(connfd, (struct sockaddr *)&peerAddr, &peerLen); //获取connfd表示的连接上的对端地址
        printf("connected peer address = %s:%d\n", inet_ntop(AF_INET, &peerAddr.sin_addr, ipAddr, sizeof(ipAddr)), ntohs(peerAddr.sin_port));
      }
      return 0;
    }

    /*客户端*/
    #define PORT 6563
    #include<stdio.h>
    #include<sys/socket.h>
    #include<netinet/in.h>
    #include<unistd.h>
    #include<string.h>
    #include<arpa/inet.h>
    
    int main(int argc, char **argv) {
      struct sockaddr_in servaddr;//服务器端地址
      struct sockaddr_in clientAddr;//客户端地址
      int sockfd; 
      int clientAddrLen = sizeof(clientAddr);
      char ipAddress[INET_ADDRSTRLEN];//保存点分十进制的ip地址
      
      if(argc < 2) {
        printf("parameter error");
      }
    
      sockfd = socket(AF_INET, SOCK_STREAM, 0);
      memset(&servaddr, 0, sizeof(servaddr));
      servaddr.sin_family = AF_INET;
      servaddr.sin_port = htons(PORT);  
      if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) {
        printf("server address error\n");//地址参数不合法
      }
    
      connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));//向服务器端发起连接请求
      
      getsockname(sockfd, (struct sockaddr*)&clientAddr, &clientAddrLen);//获取sockfd表示的连接上的本地地址
     
      printf("client:client ddress = %s:%d\n", inet_ntop(AF_INET, &clientAddr.sin_addr, ipAddress, sizeof(ipAddress)), ntohs(clientAddr.sin_port));
      return 0;
    }


    展开全文
  • Linux配置IP地址远程登录

    千次阅读 2020-06-09 10:04:24
    一、linux配置IP地址 1.打开baiLinux终端系统,然后在系统中输入du如下代码。 2.然后开始填写ip地址bai、子网掩码、网关du等命令代码,如图所示 3.在终端填写完之后,进行保存然后退出。 4.接着把网络服务进行...

    因为要学习kafka,看了相关教程都在linux操作系统下进行操作,由于之前对linux了解较少,所以一开始很懵,看了很多博客,查了很多材料,终于成功连接,在此记录下同时也方便别的小伙伴学习。

    一、linux配置IP地址

    1.打开baiLinux终端系统,然后在系统中输入du如下代码。
    在这里插入图片描述
    2.然后开始填写ip地址bai、子网掩码、网关du等命令代码,如图所示
    在这里插入图片描述
    3.在终端填写完之后,进行保存然后退出。
    在这里插入图片描述
    4.接着把网络服务进行重启,红框代码是进行重启的代码。
    在这里插入图片描述
    5.然后进行ping网关操作,进行外网进行测试,通过正常即可。
    在这里插入图片描述
    上面的内容是通过看了很多博客总结出来的,发现大家都是一样的套路。但是!!!!
    都说用vi /etc/sysconfig/network-scripts/ifcfg-eth0,而我在etc下面根本找不到sysconfig,这是为什么呢,因为我装的不是rh linux,而是其他版本的dulinux,例如ubuntu(对,就是ubuntu)!!!找到了原因,就撸起袖子干吧~
    找找/etc/下面有没有一个network目录。看看有没有一个文件叫做interfaces.如果有,那么恭喜你!可以对interfaces进行操作啦,哈哈哈哈哈。
    假设你只有一块网卡:
    auto eth0
    address 192.168.1.9(你的电脑IP)
    netmask 255.255.255.0(你的子网掩码)
    gateway 192.168.1.1(你的网关)

    下一步就可以保存退出啦
    别忘啦重启服务哦,执行: /etc/init.d/networking restart(这个是偷偷看别人的操作,但是我不行,可是我机智啊,我直接重启虚拟机,也一样能达到效果!!!)
    也可以试试自己成功没有
    然后进行ping网关操作,进行外网进行测试,通过正常即可。
    成功界面就是介个样子滴(他会一直跑,ctrl+c就可以停掉啦):
    在这里插入图片描述
    关于保存操作的时候,可能会遇到"esc+:+wq!"都不好使的情况,没关系,在执行命令的时候前面都加上sudo ,比如你要编译 /etc/network/interfaces这个文件,你就是用
    sudo vim /etc/network/interfaces
    会提示让你输入密码,大大方方把密码输入就可以啦~
    记得哦,如果vim没做修改,可以“esc+:+q”,直接退出的

    (上面遇到的很多都是我自己的坑,记录下,哈哈哈哈)

    二、远程登录

    我是用xshell登陆的,ifconfig -a把linux的ip查出来,在xshell的主机位置把查到的ip输入,就可以连接啦~
    在这里插入图片描述

    展开全文
  • linux C获取本地IP地址

    千次阅读 2021-12-28 19:15:53
    我现在是需要建立反弹shell,要从远程设备反弹至本地设备,所以需要获取本地ip,当前我在本地已经跟远程设备上的某个服务建立了连接,因此,可以使用上面连接中介绍的getsocketname的方法获取到本地ip,核心代码如下...

    参考连接
    https://cloud.tencent.com/developer/article/1177071
    https://stackoverflow.com/questions/49335001/get-local-ip-address-in-c
    我现在是需要建立反弹shell,要从远程设备反弹至本地设备,所以需要获取本地ip,当前我在本地已经跟远程设备上的某个服务建立了连接,因此,可以使用上面连接中介绍的getsocketname的方法获取到本地ip,核心代码如下:

    struct sockaddr_in localAddr;
    socklen_t len = sizeof(localAddr); // !!!一定要初始化
    bzero(&localAddr,sizeof(localAddr));
    if (getsockname(s, (struct sockaddr*)&localAddr, &len) < 0) {
    	return -1;
    }
    char buf[INET_ADDRSTRLEN];
    char *localIp = inet_ntop(AF_INET, &localAddr.sin_addr, buf, sizeof(buf));
    printf("本地IP为 %s\n", buf);
    return 0;
    

    注意
    代码的第二行,一定要对len进行初始化,否则len随机得到的长度如果小于socketaddr结构体的大小,getsocketname有时会发生截断,导致错误
    另外,最好判断一下getsocketname的返回值,防止函数出错,如果执行失败,就会得到0.0.0.0的ip地址

    展开全文
  • 通过ip地址访问操作远程Mysql数据库

    千次阅读 2019-07-23 19:40:34
    工具· Navicat Premium XXX版本 使用这个可视化数据库工具的原因是兼容数据库的种类较多,当然你也可以使用其他可视化工具,...将我们想要连接的远程网络ip地址输入: 点击连接测试,出现如下提示表面连接成功: ...

    通过ip地址访问操作远程Mysql数据库(数据库学习笔记 (三))

    可能使用的工具·

    Navicat Premium XXX版本
    各类数据库(仅以mysql为例,其他数据库设置可以参考思想)
    使用这个可视化数据库工具的原因是兼容数据库的种类较多,当然你也可以使用其他可视化工具,但实现思路一致:
    在这里插入图片描述

    问题描述

    要解决在本地上连接其他人的电脑上的数据库(或是云服务器),以及对数据库的直观的操作。

    远程数据库配置

    这里我以云服务为例:
    首先我们需要将被连接端mysql数据库的用户权限配置一下
    打开连接:
    在这里插入图片描述
    连接本地数据库后,打开连接后点击用户:

    在这里插入图片描述
    选择新建用户,输入用户名,主机(键入%,即所有主机都可以访问该账号),以及密码
    将我们想要连接的远程网络ip地址输入:
    在这里插入图片描述
    接着选择服务器权限,将所有的勾都打上,然后点击保存:
    在这里插入图片描述
    以上是远程电脑配置安排。

    本地连接

    打开Navicat Premium,选择刚刚远程端创建的帐号输入如下:
    在这里插入图片描述
    点击连接测试,出现如下提示表面连接成功:
    在这里插入图片描述
    出现如下所示表明连接成功,如果连接失败,很可能是出站端口3306未开放。
    在这里插入图片描述
    下面就可以放心对远程的数据库进行操作啦。

    展开全文
  • java 获得本地IP和远程服务器IP

    千次阅读 2016-07-26 16:41:34
    import java.io.IOException; import java.net.InetAddress; import java.net..../*获取IP地址*/ public class CatchIp { private InetAddress LocalIP = null; private InetAddress ServerIP = n
  • 依次打开“本地计算机”策略–计算机配置–Windows设置–安全设置–IP安全策略,在 本地计算机上。 或是控制面板–管理工具–本地安全策略–IP安全策略,在 本地计算机上。 在右面的空白处右击,选择第一个菜单:...
  • MCGS---modbus tcp/ip远程连接

    千次阅读 2019-08-14 15:25:52
    远程IP为接受数据的计算机IP地址,端口选择空闲端口(本地远程IP地址前三位数字需相同)。 “ModbusTCPIP数据转发设备”设置如下图5.3 图5.3 TPC(嵌入版7.7)“ModbusTCPIP数据转发设备”设置 其中设备...
  • 等保测评要求:对服务器限制远程终端登录地址 于是有了:对于某一个服务器,要限定特定IP对其进行访问的需求。 因为存在:Windows server 2003、2008、2012及Linux这几种主流服务器。 我们分...
  • 本篇博客主要分为两部分,第一部分添上在c++环境下,获取本地PC的IP地址和Mac地址的代码。第二部分是程序的运行结果。 一、C++程序代码 #include //该头文件定义了Socket编程的功能 #include //该头文件声明了...
  • 获取对外的IP地址,获取本机在局域网中的IP地址
  • ip地址分类子网掩码

    千次阅读 2019-06-20 11:43:44
    ip地址分类子网掩码 1.ip地址分类 A类网络的IP地址范围为1.0.0.1-127.255.255.254;第一个八位 是网络地址 后三个八位是主机地址。 B类网络的IP地址范围为:128.1.0.1-191.255.255.254;第二个八位是网络地址,...
  • 查看服务器是否可以链接,可以直接使用域名,如果有收发包则说明服务器正常工作 ping xxx.xxx.xxx.xxx ... 测试端口是否放通,同样可以输入域名,如有返回值则说明端口是放通的,如果返回值不是success可能是因为端口...
  • 如何查mysql的ip地址

    千次阅读 2021-02-05 11:20:35
    查看连接mysql的ip地址的方法:直接查询,语法为【select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist 】。查看连接mysql的ip地址的方法:1、最直接的办法如下:select ...
  • struct sockaddr addr; struct sockaddr_in* addr_v4; int addr_len = sizeof(addr);...//获取local ip and port ZeroMemory(&addr, sizeof(addr)); if (0 == getsockname(s, &addr, &addr_len)) {  if (a
  • 如何判断IP地址的合法性

    千次阅读 2021-01-12 22:44:31
    展开全部IP地址的分类我们说过因62616964757a686964616fe78988e69d8331333238653861特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以...
  • 原因:MySQL默认是没有开启远程连接权限,所以无法使用IP地址连接 方法:授予MySQL远程连接权限 1.在MySQL的bin目录下,打开cmd窗口; 2.登录MySQL:mysql -uroot -p 3.grant all privileges on *.* to '用户名'...
  • 本地正常启动vue项目,localhost:9001访问正常,但是使用本机ip加端口号访问却不行,于是乎,尝试了大佬们推荐的解决办法,http://192.168.79.1:9001/#/index 访问成功 如下解决办法: 将localhost 改成 0.0....
  •  * 1、获取本地IP地址  * 2、获取本机的服务器名称  * 3、获取远程服务器的主机IP地址  * 4、获取远程服务器的所有主机IP  *  * 网络编程:  * InetAddress 是用来封装IP地址相关信息的类  * ...
  • 戴尔服务器IDRAC命令配置IP地址

    万次阅读 2020-12-28 22:01:35
    在工作中我们可能会遇到,在配置管理卡的时候,由于疏忽,把网关配置错误(但是你肯定的是IP没有错),导致不能正常连接管理卡,这是有两个办法,第一:你去机房,进行查看进行修改,第二:你登陆交换机,从交换机上...
  • 请问,建立一个与远程的udp连接,在有没有函数可以取得本地ip地址和端口号
  • IP地址转换与域名解析

    千次阅读 2020-02-27 20:57:20
    IP地址转换与域名解析IP地址与端口IP地址转换相关类域名解析代码分析![在这里插入图片描述](https://img-blog.csdnimg.cn/20200227205232196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10...
  • PLC刷机教程

    千次阅读 2020-12-26 21:38:09
    plc地址为是 192.168.0.1
  • 什么是WebRTC? WebRTC,是网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术。...远程服务器通过WebRTC获取用户本地局域网(内网) IP地址
  • IP地址&端口号&TCP协议&UDP协议

    千次阅读 2018-05-11 13:38:40
    一、IP地址 1.什么是IP地址IP地址是连接在因特网上的主机的标识符 2.IP协议的分类? IP协议有两个版本,分别是IPV4,IPV6 ps:基本上提到IP地址时,不特指的话,都是指IPV4 3.IP地址的大小、格式、分类? ...
  • https://blog.csdn.net/zhengfl/article/details/21977831
  • ping 127.0.0.1   ping 127.0.0.1 是你本地主机的环回地址,实际上只要是127.0.0.1到127.... 通过ipconfig命令可以查看到笔者的本地IP为192.168.2.103,为了充分看到实验测试结果,笔者把网卡禁用;然后在运行
  • 1,打开【本地安全策略】,点击【IP安全策略,在本地计算机】,进入IP安全策略页面。 2,设置IP筛选器列表筛选器 2.1设置允许指定IP访问本机3389端口的IP筛选项 2.1.1 右键单击,选择‘管理IP筛选器列表...
  • WebRTC被发现泄漏本地IP地址

    千次阅读 2017-03-28 16:29:46
    它可以显示本地用户的IP地址,即使他们已经通过使用虚拟私有网络加长字节来隐藏自己。Daniel Roesler,涉足加密学的San Francisco研究院,上周在GitHub上发表了一个示例,阐述了漏洞是如何工作的。Roesler 的概念...
  • 【题目】Windows中如何查看日志(如查看远程登陆的IP地址)以及常用日志ID 概述 在Windows中可以使用 事件查看器 来查看相关日志,并结合日志ID进行日志筛选。常见的日志有: 4634 - 帐户被注销  4647 -...
  • 我们知道在互联网上,如果想要被其他终端访问,就需要给每台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的标识符,这就是我们所说的唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 247,233
精华内容 98,893
关键字:

本地ip地址和远程ip地址

友情链接: ContentProvider.zip