CSocket::Create(SOCK_DGRAM)与CSocket::Create(0,SOCK_DGRAM)差别在哪里?!

AlexChenLei 2005-06-12 04:55:12
为什么我用CSocket::Create(SOCK_DGRAM)
之后在m_DataSock->Connect("127.0.0.1",5001)
服务器端会有OnAccept的响应,同时OnReceive等事件也会有响应
但是我用CSocket::Create(0,SOCK_DGRAM)
然后再连接就没有任何反应呢?!
不是Create()的第一个参数默认就是0吗
只是我这里显式的写明就有问题就不同呢?!
...全文
340 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IWantToBeHere 2005-07-21
  • 打赏
  • 举报
回复
我第一次用CSocket编程,中间有些问题:
if(m_ListenSocket.Create(1500))
{
m_ListenSocket.Listen();
m_ListenSocket.m_pParentWnd=this;
}
else
AfxMessageBox("Create the Socket Failed!");

程序走到这儿执行的是else{},请问这都有可能是什么原因呢?

cnwolf 2005-06-13
  • 打赏
  • 举报
回复
CSocket::Create
BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL );
看了一个函数的声明,所有的参数都是带默认值的

带默认值的函数的参数对应试从左向右开始的.
CSocket::Create(SOCK_DGRAM)的意思是把SOCK_DGRAM辅给nSocketPort,其他的用默认值
CSocket::Create(0,SOCK_DGRAM)的意思是把0赋值给nSocketPort,SOCK_DGRAM赋值给nSocketType

他们的差别很大的
hushuangyan74 2005-06-13
  • 打赏
  • 举报
回复
你的Create两者的用法不一样,
CSocket::Create(SOCK_DGRAM)表示有MFC来分配一个端口。
而CSocket::Create(0,SOCK_DGRAM)表示表示实用0端口
nuaawenlin 2005-06-13
  • 打赏
  • 举报
回复
连接套接字最好由系统自动分配
cnwolf 2005-06-12
  • 打赏
  • 举报
回复
nSocketPort

A particular port to be used with the socket, or 0 if you want MFC to select a port.

msdn是这么说的,如果你指定0的话,就是容那个mfc选一个端口

你在客户端连接的时候是如何断定这个端口是多少的呢

第一次是5001,第二次也许久不是了

18,355

社区成员

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

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