初始化socket必须bind吗?

ytdmm 2004-05-05 08:46:51
CSocket server;
server.Create(9999,NULL,NULL);
也可以吧?

和下面写法有区别吗?
SOCKADDR_IN serverSockAddr;
serverSockAddr.sin_port=htons(9999);
serverSockAddr.sin_family=AF_INET;
serverSockAddr.sin_addr.s_addr=htonl(INADDR_ANY);

serverSocket=socket(AF_INET, SOCK_STREAM, 0);
bind(serverSocket, (LPSOCKADDR) &serverSockAddr, sizeof(serverSockAddr));

3Q!
...全文
168 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ablewindy 2004-05-08
同意 firebolt2002(霹雳) ffantasyYD(风之子)
长知识罗!
  • 打赏
  • 举报
回复
ytdmm 2004-05-07
know了,一般情况下,这两种方式指定端口的作用是一样的,但是如果机器有多个ip地址,可以用bind指定一个ip至socket,是这样吧!
  • 打赏
  • 举报
回复
XmagicX 2004-05-07
GZ
  • 打赏
  • 举报
回复
firebolt2002 2004-05-07
说的更简单一些当你的机器上有两块网卡的时候,你可以用BIND绑定一个端口和IP地址(网卡),这样系统会通过你绑定的网卡发送或接收数据。
  • 打赏
  • 举报
回复
sharkhuang 2004-05-06
不必要!但是系统内核其实是bind了的.
  • 打赏
  • 举报
回复
microgiant 2004-05-06
同步就是一样的。
  • 打赏
  • 举报
回复
ytdmm 2004-05-06
各位好像误解我意思了:)

我知道服务器端需要bind一个端口用来监听,我的意思是

serverSocket.Create(9999,NULL,NULL);
以及这种方式:
bind(serverSocket, (LPSOCKADDR) &serverSockAddr, sizeof(serverSockAddr));

这两种bind至9999端口的方式有什么区别?

3Q!
  • 打赏
  • 举报
回复
coseu 2004-05-06
serverSocket.Create(9999,NULL,NULL);这种方法用的是mfc,而bind(serverSocket, (LPSOCKADDR) &serverSockAddr, sizeof(serverSockAddr));这种方法用的是api。实际上第一种方法中mfc也是调用api函数bind来完成绑定端口的工作的。

  • 打赏
  • 举报
回复
ffantasyYD 2004-05-06
是一样的。
serverSocket.Create(9999,NULL,NULL);这种方法用的是mfc,而bind(serverSocket, (LPSOCKADDR) &serverSockAddr, sizeof(serverSockAddr));这种方法用的是api。实际上第一种方法中mfc也是调用api函数bind来完成绑定端口的工作的。
  • 打赏
  • 举报
回复
halk 2004-05-05
楼上说的对,没什么要补充的了。
  • 打赏
  • 举报
回复
暗黑帝国 2004-05-05
服务端必须BIND一个端口用来监听,而客户端就不必BIND,只管往服务器端监听的那个端口发送数据就行,所以可以不必。
  • 打赏
  • 举报
回复
ytdmm 2004-05-05
为什么服务器必须而客户端不是?

如果不这样写会有什么后果?

我仅仅要在服务器和客户端之间传递简单消息,上述两种写法还有区别吗?
  • 打赏
  • 举报
回复
UDX协议 2004-05-05
做服务器必须。
  • 打赏
  • 举报
回复
halk 2004-05-05
不是必须,看你做什么用了。如果是做tcp连接的客户端用,就不必bind。
  • 打赏
  • 举报
回复
相关推荐
发帖
网络编程
加入

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2004-05-05 08:46
社区公告
暂无公告