在mfc中,tcp监听知道有连接以后怎样创建一个UDP的socket来进行发送数据

Boy_Vc 2003-12-12 06:02:29
我的问题是这样的,在服务端,用TCP的socket(继承自CAsyncSocket类),等接收连接以后,创建一个UDP的socket负责发送,因为函数 virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );中的rConnectedSocket为一个空的socket,msdn上介绍,其还没有调用creat函数,我想知道rConnectedSocket是什么协议的,默认是tcp吗,如果我要udp是否在Accept函数调用以后,在调用rConnectedSocket.creat()置成udp的呢
下面是我的代码,请大家指教!万分感激!
void CTCPSock::OnAccept(int nErrorCode)
{
CUDPSock* pSocket = new CUDPSock();

if(m_bIsServer)
return;
m_RemoteAddr = new SOCKADDR();
memset(m_RemoteAddr,0,sizeof(SOCKADDR));

if(Accept(*pSocket,m_RemoteAddr))
{
m_bIsServer = true;

pSocket->Create(m_Port,SOCK_DGRAM,FD_WRITE);//对吗

SendThreadInfo* Info = new SendThreadInfo();
Info->sendsocket = pSocket;
Info->sendbuffer = pSocket->m_chSendBuffer;
Info->sendlength = &pSocket->m_nSendLength;
Info->stopped = &pSocket->m_bSendStopped;
Info->sendevent = pSocket->m_pevtSend;
AfxBeginThread(SendThreadProc,Info);

AsyncSelect(FD_CONNECT);
Connect(m_RemoteAddr,sizeof(m_RemoteAddr));
}
else
{
delete pSocket;
delete m_RemoteAddr;
}

CAsyncSocket::OnAccept(nErrorCode);
}
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcar 2003-12-13
  • 打赏
  • 举报
回复
我也想知道,不过QQ就是同时使用了TCP和UDP
Boy_Vc 2003-12-13
  • 打赏
  • 举报
回复
谢谢,各位指教。
可不可以,使用一个TCP Socket负责监听,等接受到客户消息,获得地址以后,重新创建UDP的Socket,发送消息
mingcedar 2003-12-12
  • 打赏
  • 举报
回复
accept返回的都是TCP的
要想用UDP,可以先建立一个UDP socket,等待客户发消息,不能混用
sboom 2003-12-12
  • 打赏
  • 举报
回复
UDPsocket是不能连接的啦,哪有说连接后转换成UDP socket这样的。
孤必有邻 2003-12-12
  • 打赏
  • 举报
回复
1、TCP调用accept后,rConnectedSocket也是一个TCP协议的SOCKET(没有默认的说法),此时你不可能用UDP去发送或接收,不能混用。
2、UDP协议中,没有listen,accept,connect等函数的调用,只有recvfrom和sendto

18,356

社区成员

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

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