socket ip地址

SOCKET通信中的各种ip问题,服务端获取客户端ip地址 inet_ntoa(ser_addr.sin_addr),如果客户端地址是"192.168.2.2",在服务端打印出来的这个ip就是"192.168.2.2",可用INADDR_ANY,宏INADDR_ANY转换过来就是0.0.0.0,泛指本机的意思,也就是表示本机的所有IP,因为有些机子不止一块网卡,多网卡的情况下,这个就表示所有网卡ip地址的意思,也可以自己填入需要的ip,比如上述函数获得的某一个ip。在进行socket网络通信的时候,我们经常需要获取ip地址,下面介绍一些获取ip地址的方法。 阅读详情

linux 下用socket 写一个客户端程序,如下

int fun(char* ip)

{

  host=gethostbyname(ip);
     if( host ==NULL)
    {
        herror("\ngethostbyname error:");
        return -1;
    }
    serv_addr.sin_family=AF_INET;
    serv_addr.sin_port=htons(51112);
    serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
    bzero(&(serv_addr.sin_zero),8);
    int ret1=connect( sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr) );


}

可以看到,这个ip是作为参数传进来的,而且这个参数是通过一个服务器返回来的ip,经过打印调试,发现ip显示是正确的,但是connect 会报错:

: No route to host

后又换成其他方式传递ip,还是报错

但是将ip写成字符串,比如ip="......"; 这样传进去,一切正常

后来,发现linux调试程序太麻烦了, 出了这样的问题,其实在运行时候,看一下内存就知道了,printf来调试,毕竟效果还是很差


于是,把程序用kdevelop 单步调试,发现问题了,通过服务器传回来的  字符串 除了ip地址外 后有若干 乱码

而写死的ip 字符串,后面没有多余的字符。


传的ip是通过 memcpy 到一个定长字符串数组来实现的

memcpy(lbi.ip,ip.c_str(),ip.length());

于是,将该字符串数组清零,再拷贝,一切正常


这个问题耗时1个半小时, 又是常识问题。

所以,在写网络程序时,记得将协议里面的char [ ] 清零后,再放数据,切记


socket的初始化与IP地址的转换 socket是介于传输层和应用层之间的一个API,它比一般的网络前端更靠近底层,它可以直接基于TCP/UDP协议甚至网络层的IP协议进行编程。 WSAStartup()用于初始化windowssockets,返回WSADATA结构体,只有调用了WSAStartup()以后,才能继续调用windowssockets的其它API。需要包含头文件: #include "stdafx.h" #in 阅读详情

相关推荐

【Linux】socket地址、IP地址、Port端口转换

(一)通用socket地址 (1)struct sockaddr struct socketaddr类型是网络编程的通用地址类型,其定义如下 头文件:bits/socket.h #include <bits/socket.h> struct sockaddr { sa_family_t sa_family; //地址族(协议族)类型的变量 char sa_data[14]; //存放socket地址值 }; 协议族和地址族的关系 注意:宏PF_*和AF_*都定义在bits/soc

xiaoxiaoguailou的博客 4969

socket IP地址和端口号

IP(Internet Protocol)网络协议,是为收发网络数据分配给计算机的值。 端口号是为了区分程序中创建的套接字而分配的序号 参考:《TCP/IP网络编程》尹圣雨,章节3.1 网络地址(Internet Address):同样是为使计算机连接到网络并收发数据分配的IP地址 IPv4(Internet Address version 4)4字节地址族 IPv6(Internet Address version 6)16字节地址族 IPv4将4字节的地址分为网络地址和主机地址,且分为A、B、C、

YDDUONG的博客 1万+

Qt6导入QtChart绘制图表(添加组件)

我在按照大佬们的说明添加QtChart时发现,我的电脑上并不能正确的添加QtChart并编译通过,所以在综合了两位大佬的说明又自己探索了一番后,正确编译通过,分享出来,以便同志们节省一些时间。

Nuaa0719301zyx的博客 2952

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

Windows TCP: 通过socket得到远端的IP和连接端口 SOCKET acceptSock; acceptSock = accept(listenSock, NULL, NULL); SOCKADDR_IN sockAddr; int iLen=sizeof(sockAddr); getpeername(acceptSock,(struct ...

墨痕诉清风的博客 7492

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 168

TPS5430/54302调试血泪史:从‘烫手山芋’到冒烟烧板,我的5V电源到底怎么了?

本文深入剖析了TPS5430/TPS54302 DCDC电源芯片调试中的常见问题,包括异常发热、电压漂移等,并提供了从热设计到PCB布局的全面解决方案。通过实战案例,揭示了数据手册中未明确的‘潜规则’,帮助工程师避免烧板风险,提升电源系统稳定性。

weixin_28744423的博客 504

Socket编程

网络编程网络编程也叫socket编程,套接字编程,网络编程。 Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 Socket原理机制: 通信的两端都有Socket。 网络通信其实就是Socket间的通信。 数据在两个Socket间通过IO传输。

baobaoxiong_123456的博客 447

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 279

树莓派学习:socket获取客户端IP地址

【代码】树莓派学习:socket获取客户端IP地址。

weixin_59669309的博客 1080

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 740

用 SQL Trace 透视 SAP HANA 执行链路:从会话层到内部语句,一次把性能问题抓个现行

摘要:SAP HANA 的 SQL Trace 是性能分析和故障定位的关键工具,它记录会话层所有执行的 SQL 语句。文章解释了 SQL Trace 的工作原理、使用场景和配置方法,包括图形界面和 SQL 命令两种启用方式。重点讨论了存储过程内部语句的捕获问题,指出需要通过设置 internal 参数才能获取过程体中的详细 SQL 语句。文章还提供了实用的排查建议,强调要精准控制 Trace 范围,避免生成过大文件。最后通过真实案例展示了如何利用 SQL Trace 快速定位性能问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1043

深入解析Socket通信与IP地址机制

本文摘要: Socket通信的核心概念包括IP地址(标识主机唯一性)、端口号(标识进程唯一性)和网络字节序处理。IP+Port组合称为套接字(Socket),它是网络通信的基础。文章详细介绍了Socket API,如socket()、bind()、connect()等函数的使用,以及sockaddr_in结构体的组成。特别强调了网络字节序转换的必要性和相关函数(htonl/ntohl等)。对于TCP通信,重点描述了listen()、accept()、connect()的三次握手过程,并提供了多进程处理连接的

2401_84170223的博客 776

修改Windows hosts文件的解决方案

本文主要介绍了修改Windows hosts文件解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 安装软件 2.2 修改hosts文件

weixin_43178406的博客 1万+

Socket通信与IP地址分类

可以看到,IP协议标准中的数据报的组成部分中有4bit用于记录数据报的报首长度,但是单位是字(1个字等于32比特),而IP数据报分由固定报首和可选字段两部分组成,如果不设置可选字段,则固定报首的长度是20字节,也就是5个字,所以数据包报首的最小值是5(注意:单位是字!掌握了IP地址中的网络编号的规则之后,大家还需要了解一下IP地址中的本地地址的分配规则,本地地址的作用是标识处于某个网络中的唯一主机。另外,为了让不同的网络进行互联,就必须使用中继设备,和网络层相关的硬件设备就是路由器!

qq_55948464的博客 676

飞牛fnNAS存储模式RAID 5数据恢复

中介绍了fnNAS存储空间的几个模式,细心的网友应该能感受到,我是非常推崇RAID 5的。但我认为,一般人出现1块硬盘损坏后,就能够赶紧采取处理措施了,再高的容灾等级也无法满足这个用户的需求了。》就完成了飞牛NAS存储空间的说明,包括了如何创建、怎么选择空间模式、RAID 5 硬盘故障后的更换、系统更换/重装后数据盘的恢复等等。在VMware中新建虚拟机,安装好fnNAS后,再向虚拟机添加“已有硬盘”(这就是所谓崩溃虚拟机的数据盘),此时新的fnNAS出现提示。在“选择要添加的硬盘”中,选择刚添加硬盘。

dgnankai的专栏 3011

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

网络通信,IP地址, 端口,socket

目录 1. 什么是网络 2. 使用网络的目的 ip地址 1. 什么是地址 2. ip地址的作用 查看或配置网卡信息:ifconfig 测试远程主机连通性:ping 3. ip地址的分类(了解) 端口 1. 什么是端口 2. 端口号 3. 端口是怎样分配的 4. 小总结 socket简介 1. 不同电脑上的进程之间如何通信 2. 什么是socket 3.创建soc...

moonlightpeng的博客 8335

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

网络编程day01(IP地址、Socket、端口号)

(1)socket 是一个编程接口(2)是一种特殊的文件描述符 (everything in Unix is a file)(3)socket是一种通信机制,并不仅限于TCP/IP协议(4)面向连接 (Transmission Control Protocol - TCP/IP)(5)无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)

dghbs的博客 3305

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

通过socket连接获取本机IP地址

#include   #include   #include   #include   #include   #include   #include   #include   #include   #include     #define PORT 443   #define MAXDATASIZE 1024     int main()  

Code Young 的博客 3814

【C++高并发服务器WebServer】-11:Socket与IP地址转换

很多网络编程函数诞生早于 IPv4 协议,那时候都使用的是 struct sockaddr 结构体,为了向前兼容,现在sockaddr 退化成了(void *)的作用,传递一个地址给函数,至于这个函数是 sockaddr_in 还是sockaddr_in6,由地址族确定,然后函数内部再强制类型转化为所需的地址类型。因此,Linux 定义了下面这个新的通用的 socket 地址结构体,这个结构体不仅提供了足够大的空间用于存放地址值,而且是内存对齐的。通过下面的代码,我们可以确认完整的网络字节序是什么样子的。

theaipower的博客 6292

C# 从Socket中获取IP地址

//SocketList为一个Socket集合 public List<Socket> SocketList = new List<Socket>(); SocketList[i].RemoteEndPoint.ToString().Split(':')[0]; //SocketList[i].RemoteEndPoint.ToString()为:IP地址+“:”+端口 //如 192.168.1.100:8888 ...

qq_42393139的博客 4053

安卓开发之socket的IP地址

1、IP地址获取      socket.getInetAddress():本客户端的IP地址              返回:/192.168.1.108      socket.getLocalAddress():本服务器的IP地址              返回:/192.168.1.111     socket.getLocalSocketAddress():本服务器的IP地址+...

LinQiPing233的博客 1262

c语言中如何自动获取ip地址,经过socket得到自己的ip地址

通过socket得到自己的ip地址现在正在编一个在一个多网卡(多个ip)的服务器上的server程序。我一开始用INADDR_ANY绑定在一个监听的socketA上,当收到客户端的connect时,我server这边用accept接收,我想知道的是,怎样从accept的信息以及socketA中知道这个信息是从那个网卡,那个ip进来的?谢谢!------解决方案-------------------...

weixin_32101285的博客 1293

通过socket获得IP地址

当SOCKET进行接收时,用到SOCKADDR_IN 结构,假设变量为:clientCString strIP;strIP = inet_ntoa(client.sin_addr);便获得源主机的IP地址

1527

socket 获取本机的主IP地址,真正的ip地址,连接外部网络的IP

C# socket 获取本机的主IP地址,真正的ip地址,连接外部网络的IP连接一个外网ip,确定本机的主IP地址基本原理是,一人的电脑如果安装了virtualBox等虚拟机时,常常有许多虚拟的网卡,如果用GetHostEntry(),获取的是所有的IP,无法分辨哪个是主IP。下面这个函数返回的就是主要的IP 连接一个外网ip,确定本机的主IP地址 基本原理是,一人的电脑如果安装了virtualB...

weixin_42897680的博客 2476

socket/io(5)、IP地址的三种表示格式及在Socket编程中的应用

作者:huangguisu 使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式: 1)Ascii(网络点分字符串)- 2) 网络地址(32位无符号整形,网络字节序,大头) 3)主机地址 (主机字节序) IP地址是IP网络中数据传输的依据,它标识了IP网络

黄规速博客:学如逆水行舟,不进则退 1万+

通过IP或socket获取对方的MAC地址

1。通过已经连接的socket文件获取:   [cpp] view plaincopy int getpeermac( int sockfd, char *buf )   {       int ret =0;       struct arpreq arpreq;       struct sockaddr_in dstadd_in;  

feixiaku的专栏 2978
上一篇: 用于log系统的变长参数的函数
下一篇: makefile模板
yaotinging
博客等级 码龄18年 7粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值