addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1")这句话是设置什么IP地址?

fhp256 2012-05-03 06:16:58
最近学网络编程,在客户端程序有一句代码
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
好像听说是设置服务器端的IP地址,由于client和server都在一台机器上,所以听说要设置成127.0.0.1;因为本地机器的回路IP是这个,可是我不设置成127.0.0.1也可以,只要第一个数字是127 其他几个可以随便更改都可以实现通信,比如
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.101.100.111");第一个127如果改成别的就无法实现通信了;
我想问三个问题
一:为什么第一个127不能改?其他都可以随意更改
二:这句代码addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");到底是设置谁的IP地址;
三:如果设置的是服务端的IP,那么同一台机器上服务端的IP到底是哪个?
新手,分不多,问题不少,麻烦路过的大大们不吝赐教。(服务器端设置的是addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);)
...全文
9114 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingtingshaoshuo 2014-08-17
  • 打赏
  • 举报
回复 1
引用 9 楼 guansixu 的回复:
[quote=引用 7 楼 topershabby 的回复:] addrSrv.sin_addr.S_un.S_addr是个啥意思啊??我是新手,能给我解释下么,谢谢啦
是SOCKET编程中的一个结构体,用来指定IP地址的。[/quote] sin_addr是结构体SOCKADDR_IN里的一个成员,sin_addr给出的是套接字的主机IP地址。为什么不直接写成addrSrv.sin_addr=inet_addr("127.0.0.1"); 而要编为addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); S_un.S_addr这是什么意思啊?求解答!
过程而已 2013-05-09
  • 打赏
  • 举报
回复
引用 7 楼 topershabby 的回复:
addrSrv.sin_addr.S_un.S_addr是个啥意思啊??我是新手,能给我解释下么,谢谢啦
是SOCKET编程中的一个结构体,用来指定IP地址的。
w361807535 2013-05-05
  • 打赏
  • 举报
回复
这是个特殊的IP,127开头的是回路IP,当然是自己,我们一般情况专用是127.0.0.1,实质上只要以127开头(除了后面全1和全0)都可以的!你用ping命令ping自己只要是127开头的都行!
topershabby 2013-03-19
  • 打赏
  • 举报
回复
addrSrv.sin_addr.S_un.S_addr是个啥意思啊??我是新手,能给我解释下么,谢谢啦
Eleven 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
[/Quote]
sasaon 2012-05-03
  • 打赏
  • 举报
回复
127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
Gloveing 2012-05-03
  • 打赏
  • 举报
回复
回环地址,这里作为自己测试使用
向立天 2012-05-03
  • 打赏
  • 举报
回复
1、关于回送地址可以参考http://baike.baidu.com/view/971216.htm,简单说就是一个地址段也就是127段都会其作用
2、服务器
3、一台机器可以用很多个IP,但是针对TCP/IP设置一般只制定一个IP,你指定哪一个哪一个就有效,当然也可以制定为INADDR_ANY,这样会对所有有效IP都适用
gold_water 2012-05-03
  • 打赏
  • 举报
回复
127.0.0.1 这个IP地址的意义和作用,可以参考一下,IP协议详解方面的资料,里面说得很清楚;
fhp256 2012-05-03
  • 打赏
  • 举报
回复
感谢各位,我终于明白了,还是csdn好啊,牛人多,热心人更多
#include #include #include #include int main() { //加载Socket动态链接库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ return 1; } /* Confirm that the WinSock DLL supports 2.2.*/ /* Note that if the DLL supports versions greater */ /* than 2.2 in addition to 2.2, it will still return */ /* 2.2 in wVersion since that is the version we */ /* requested. */ if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ WSACleanup( ); return 1; } /* The WinSock DLL is acceptable. Proceed. */ //1.创建套接字 SOCKET sockClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET == WSAGetLastError()) MessageBox(NULL, "Create Socket failed!", "Error", MB_OK); //2.向服务器发送连接请求 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); //3.和服务器进行通信,接收或是发送数据 char recvBuf[100]; recv(sockClient, recvBuf, 100, 0); if(SOCKET_ERROR == WSAGetLastError()) MessageBox(NULL, "Server recieve data failed!", "Error", MB_OK); printf("%s\n", recvBuf); char sendBuf[] = "Hello Server"; send(sockClient, sendBuf, sizeof(sendBuf) + 1, 0); if(SOCKET_ERROR == WSAGetLastError()) MessageBox(NULL, "Server send data failed!", "Error", MB_OK); //4.关闭套接字的资源,以及卸载套接字动态链接库 closesocket(sockClient); WSACleanup(); return 0;

18,359

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧