在书看看到了一段代码,不是很明白
重载
CAsyncSocket *client; //定义了一个CAsyncSocket指针对象
CAsyncSocket::OnAccept(client,)
书上直接在OnReceive这个函数里面调用client对象,来接收客户端发送来的数据
但是这里的client没有用create函数和本地端口绑定呀?它怎么能直接用呢?
书上说OnAccept函数可以直接新建一个Socket类,在这里我只能看到了OnAccept来引用这个client指针对象,却看不到Accept是如何创建它的??
我有点不明白!请高手解释一下
谢谢!
重载
CAsyncSocket *client; //定义了一个CAsyncSocket指针对象
CAsyncSocket::OnAccept(client,)
书上直接在OnReceive这个函数里面调用client对象,来接收客户端发送来的数据
但是这里的client没有用create函数和本地端口绑定呀?它怎么能直接用呢?
书上说OnAccept函数可以直接新建一个Socket类,在这里我只能看到了OnAccept来引用这个client指针对象,却看不到Accept是如何创建它的??
我有点不明白!请高手解释一下
谢谢!
解决方案 »
- 位图拉伸处理,怎么实现呢?
- 请教MFC达人,浏览器编程中怎样实现显示各个网页favicon.ico?
- 还是RTX串口的问题希望老大们继续赐教啊
- 如何根据一个窗口的位置调整另一个窗口的位置?
- ===========一个进程隐藏的例子,要的留下email===============
- SetBkMode的问题?
- 知道包的大小如何计算网络流量?
- 求,类金山词霸的界面。一定结贴。(同样的有三个帖子,同时结贴,分不够再加)再加一贴,(现在有四个)。
- (急!)有关使用内存DC消除闪烁的问题.万望高手帮忙!
- 谁能讲讲NetMeeting里的共享白板的实现方式?600分。
- 为什么我的ActiveX被网页调用时,总是提示用户:ActiveX不安全,是否允许网页与控件交互?(在线等)
- 如何让 atl activex 获得网页的内容?在线等待,来者有分!
我平常的做法是从csocket派生一个新类,在create的时候绑定端口啊。
这种方法没见过的
听说accept这个函数可以自动返回一个套接字
也就是这样的,我给个例子你看!
CAsyncSocket *client; //定义一个对象
CAsyncSocket::OnAccept(client)//在这里系统自动调用accept并返回一个新套接字地址,并把这个值赋给client
所以这里的client不需要调用create函数,而是accept以经把一个新的套接字地址赋给client了
我看书上是这么说的,但其实我还是有些不明白的
*********实际上,在这之前我以经建了一个套接字server并调用了create函数,使它与本地端口999绑定,主机IP:192。168。0。1
但是在这里accept又新建了一个套接字,这里不会和我原来建的server套接字相冲突吗?
是不是所有的指针类型对象,在用之前都要new一下?
例
CAsyncSocket *client=new CAsyncSocket();
CAsyncSocket *client=new create();
需要你手动的释放资源,否则会出现内存泄漏
/* Description : Notify this listening socket that it can accept */
/* pending connection requests. */
/********************************************************************/
void CDataSocket::OnAccept(int nErrorCode)
{
CAsyncSocket socky;
Accept(socky);
SOCKET socket = socky.Detach();
Close(); Attach(socket); m_bConnected = TRUE;
m_pConnectSocket->SendResponse("150 Connection accepted"); CAsyncSocket::OnAccept(nErrorCode);}/********************************************************************/
void CDataSocket::OnSend(int nErrorCode)
{
CAsyncSocket::OnSend(nErrorCode);
}void CDataSocket::OnClose(int nErrorCode)
{
CAsyncSocket::OnClose(nErrorCode);
}
void CDataSocket::OnReceive(int nErrorCode)
{
CAsyncSocket::OnReceive(nErrorCode);
Receive();
}
你的这段我还不是很明白
CAsyncSocket socky; //你还是在这里新建了一个套接字类
Accept(socky);//在这里accept里面用到 了socky这个对象,但是socky这个对象并没有调用ceate函数来绑定本地端口呀!
SOCKET socket = socky.Detach();
Close(); Attach(socket);