问一段代码什么意思

fwoi03 2008-07-15 11:18:19
SOCKET sockSvr = socket( AF_INET , SOCK_STREAM,0 );
if ( sockSvr == INVALID_SOCKET )
{
return ;
}
sockaddr_in localaddr;
localaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons( 0 );


if (SOCKET_ERROR == bind(sockSvr,(sockaddr*)&localaddr,sizeof(sockaddr) ))
{
return ;
}
sockaddr_in addr;
int iLen = 16;
if ( SOCKET_ERROR == getsockname( sockSvr ,(sockaddr*)&addr ,&iLen ) )
{
return ;
}
if ( SOCKET_ERROR == connect( sockSvr ,(sockaddr*)&addr ,iLen ) )
{
return ;
}


请问这段代码是什么意思啊 好象是连接自己 但是却可以连接成功 谁可以详细的讲一下么
还有bind 不是用来建立服务器时候用的么
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2008-07-16
  • 打赏
  • 举报
回复
Up.....
thirddata 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Leo_red 的回复:]
学习了!
补问一句,这种做法一般都是为了程序自身测试用吗?
有什么实用场景吗?
谢谢
[/Quote]
任何实用程序都是从实验开始的,你刚开始写了个程序,什么都没试过,总不能就搞2台机子在那里互联了吧,一般都是现在自己机子上调试,通过后,再慢慢扩大。
thirddata 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hiksa 的回复:]
我奇怪的是。他的代码的端口怎么是0?
[/Quote]
应为他是客户端,端口为0是表示让系统选择一个未使用的临时端口。
hiksa 2008-07-15
  • 打赏
  • 举报
回复
我奇怪的是。他的代码的端口怎么是0?
bitxinhai 2008-07-15
  • 打赏
  • 举报
回复
测试socket程序的时候,
经常会绑定自己,
然后再测试通信程序
是否可以正常的发送接受数据,
如果行动话,
以后直接把绑定的ip改一下就可以跑到别的机器上了!!!
thirddata 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 fwoi03 的帖子:]
请问这段代码是什么意思啊 好象是连接自己 但是却可以连接成功 谁可以详细的讲一下么
还有bind 不是用来建立服务器时候用的么
[/Quote]

这段代码的功能如下:
1,创建一个socket
2,绑定到一个本机地址
3,获取绑定的地址,主要是获取绑定的端口号
4,发起链接
bind在这里的功能主要是为了让下面的getsockname函数能够得到有效的端口地址,如果不调用bind,getsockname只有在connect之后才能获得有效的地址。
zhb1190 2008-07-15
  • 打赏
  • 举报
回复
如同在同一台机器上运行服务器和客户端一样!IP地址是相同的,但是端口不同!
Leo_red 2008-07-15
  • 打赏
  • 举报
回复
学习了!
补问一句,这种做法一般都是为了程序自身测试用吗?
有什么实用场景吗?
谢谢

18,356

社区成员

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

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