Windows

TCP:

通过socket得到远端的IP和连接端口

SOCKET acceptSock;

acceptSock = accept(listenSock, NULL, NULL);

SOCKADDR_IN   sockAddr; 
int   iLen=sizeof(sockAddr);

getpeername(acceptSock ,(struct   sockaddr   *)&sockAddr,&iLen);//得到远程IP地址和端口号

char *strAddr   =   inet_ntoa(sockAddr.sin_addr);//IP 
int  uIPPort   =   sockAddr.sin_port; //端口号

///

获取域名对应的IP地址

经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的。它能够获取域名对应的IP地址并且返回一个hostent类型的结果。其中包含了IP地址信息,他的头文件为netdb.h

struct hostent { char *h_name; // 主机名 char **h_aliases; // 别名列表 int h_addrtype; // 地址类型int h_length; // 地址的长度 char **h_addr_list; // 地址列表
}

其中的h_addr_list便是存放IP地址的信息。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<netdb.h>int main() {char *hostName = "www.baidu.com";char ip[100];struct hostent *host;struct in_addr **addr_list;int i;if (NULL == (host = gethostbyname(hostName))) {perror("get host by name error");exit(1);}addr_list = (struct in_addr **)host->h_addr_list;for (i = 0; addr_list[i] != NULL; i++) {// inet_ntoa()将long类型的IP地址转化为圆点的字符串形式,作用与inet_addr()相反strcpy(ip, inet_ntoa(*addr_list[i]));}printf("%s resolved to: %s", hostName, ip);return 0;
}

gethostbyname()用来获取域名对应的IP地址。可以参加gethostbyname()来查看更过的用法。

从socket连接中获取对方IP

由前面能够知道accept()返回的是结构体sockaddr_in,由此很容易得知对方的IP和端口信息。

char *client_ip = inet_ntoa(client.sin_addr);
int client_port = ntohs(client.sin_port);

linux

2013-09-30 11:26:13
#include <sys/socket.h>
#include <arpa/inet.h>.........struct sockaddr_in sa;
int len;.........len = sizeof(sa);
if(!getpeername(sockconn, (struct sockaddr *)&sa, &len))
{memset(sql,0,1024);snprintf(sql,1024,"client login. ip: %s, port:%d",inet_ntoa(sa.sin_addr),ntohs(sa.sin_port));snprintf(machine_ip,17,"%s",inet_ntoa(sa.sin_addr));mylog(sql);
}

通过socket得到远端的IP和连接端口相关推荐

  1. C#中开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念 1.TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基 ...

  2. 查看端口信息netstat,查看ip,连接端口

    查看那些端口被占用了 C:>netstat -aon|findstr "80″ TCP    0.0.0.0:19780           0.0.0.0:0             ...

  3. Rtthread学习笔记(二十)RT-Thread使用Esp8266,连接远端服务器IP端口发送数据

    一.步骤 将RTThread移植到STM32上,添加esp8266,连接wifi,从而实现stm32与服务器通讯.其中STM32做客户端,在华为云服务器上开的网络调试助手(具有固定IP端口)做服务器, ...

  4. java socket 对方关闭_java Socket判断对方是否已关闭连接

    如何判断远端socket是否已经断开连接,如果断开那么需要重新连接. 1通过socket类的方法isClosed().isConnected().isInputStreamShutdown().isO ...

  5. 【转】 python socket向百度发送http长连接请求 并做搜索

    http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html [转] python socket向百度发送http长连 ...

  6. mysql 不限定 ip_mysql 不指定 ip 的连接默认都是 localhost

    问题场景 在本地使用 docker 启动了一个 mysql 容器,并把本地的33067端口映射到容器内 mysql 的 3306,我们假设容器的 ip 地址是 172.17.0.2,使用本地的 mys ...

  7. Socket网络编程(TCP/IP/端口/类)和实例

    原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Ap ...

  8. JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开

    Pre 解决思路 代码后记: 客户端app上的部分代码 调用: 服务器上: 客户端判断服务器是否还活着代码: PRE 在利用socket写通讯程序的时候,想检测服务器是否还活着. 从网上找了很多资料, ...

  9. TCP/IP:连接服务器失败(错误原因:Connection refused)

    TCP/IP:连接服务器失败(错误原因:Connection refused) Linux中,通过系统调用(system call) connect 连接指定服务器建立TCP连接. connect 最 ...

最新文章

  1. 和12岁小同志搞创客开发:手撕代码,做一款数字骰子
  2. (1)java虚拟机概念和结构图
  3. office2010表格计算机,2010年职称计算机考试:Word编辑表格
  4. HBuilder、HBuilderX连接夜神模拟器
  5. pgadmin4 如何改成中文版
  6. 【爱思考】CISP考试试题介绍(其中一部分)
  7. Excel的基本操作
  8. Netty in Action 翻译说明
  9. SVN黑马程序员笔记
  10. mysql relay log.info_slave_relay_log_info
  11. 四川大学计算机专业调剂,四川大学计算机学院(软件学院)研究生调剂
  12. vue中请求到的数据赋值给data 对象
  13. 性能监控与服务器监控
  14. axios 和洋葱模型中间件
  15. 网络游戏服务器构架设计
  16. 【软件分析第12讲-学习笔记】可满足性模理论 Satisfiability Modulo Theories
  17. Word2016添加mythtype加载项
  18. 项目管理MOOC-期末
  19. 好用的品牌广告设计矢量素材(图形、图案、水彩肌理)
  20. |、、||、、^符号含义

热门文章

  1. R 学习 - 散点图
  2. mysql 聚合函数求积_Oracle聚合求和和聚合求积(顺便解决BOM展开的问题)
  3. plc维修入门与故障处理实例_电气控制基础+PLC编程入门+工程应用实例
  4. 分区界限必须调整为高于最后一个分区界限_不花一分钱,为SSD硬盘腾空间
  5. 英寸和厘米的交互python_Python的新手-尝试将厘米编码为英寸,反之亦然
  6. Qt文件编码转换工具(三) Qt界面设计
  7. C++ STL string的属性
  8. css3书页翻转,CSS3实现3D翻书效果
  9. 安全登录代码 php,PHP登录怎么写安全
  10. docker 本地部署 mysql_Docker 部署Mysql 服务和Redis 服务的方法