socket演示程序

所需积分/C币:50 2006-07-27 00:00:00 0B RAR
3
收藏 收藏
举报

过去做网络方面的东东的时候,为了试验一些SOCKET API,编写了一个演示的DEMO,可能有朋友用得到,仅在此抛砖引玉。 这个测试工程中对Socket封装的类的文件: Soc.h Soc.cpp 网络传输封装类 SocMesWnd 异步网络传输时,接收网络消息的窗体 该DEMO演示了以下技术: 1、CTCPServe、CTCPClient Tcp异步传输,含TCP客户端与TCP服务端 2、CUDPSocket Udp异步传输 & Udp组播 3、CUDPSock5 Udp Sock5传输 4、CFtp Ftp传输 设计说明: 每个传输类都有以下两个方法 void SetSocketNotify( HWND hWndMsg, UINT unMsg ){m_hWndMsg = hWndMsg; m_nMsg = unMsg;}; void SetSocketNotify(SOCKET_NOTIFY pFuncMes){m_pFuncMes = pFuncMes;}; 这两个函数用来设置发生socket事件后的外部响应方式,一种是通过窗口消息进行响应,一种是通过回调函数进行响应。这两种方式都是阻塞的。 当发生网络事件后,两种方式都会收到 WPARAM wParam, LPARAM lParam 这两个参数,其中wParam是NET_MSG枚举,表示网络事件,lParam是附加数据,由SetExtData函数预先设置好。 void SetBufferLen( int nLen ); 该函数是设置当socket收到数据后,接收数据的缓冲区的大小的。当收到数据事件发生时,首先会将数据接收在缓冲区中,然后向发部发送消息或者调用回调函数,外部模块可以在响应函数中调用类的 void GetData( const BYTE ** ppucBuf, int &nLen ) 来获取接收到的数据。 对于 CTCPServe这个类,有些使用上的注意点:会在收到远程连接请求后自动连接客户端,当远程连接断开时,也会自动删除连接该远程socket的子socket。CTCPServe由于每次接受连接请求后,建立了新的子socket去连接远程客户,所以它有些方法需要输入子通道的标识来完成某些功能。该标识会在接受连接请求后通过响应消息或者函数发送给外部。 比如说: int GetRemoteIP( int nID, CString& strPeerAddress, int &nPeerPort ); 这个函数用来获取远程连接的客户端的IP和端口,参数中就需要指定是哪个远程客户。 UDP传输类在接收数据的时候会将远程发送数据的主机IP和地址传送给外部。 CUDPSock5在实际使用中发现与sock5服务器的连接不是很稳定,大概是我没能很好地解析sock5协议的关系。 这个DEMO在后期添加了CFtp这个类,处理FTP下载。之所以未使用WinInet,因为它有一个MS确认的BUG:超时设置无效。这个FTP类演示了FTP协议的解析过程,完成常用的FTP功能(除FTP上传外,容我有空再做,^_^)。它也是异步的。这个类支持PORT和PASSIVE两种模式的FTP,

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
socket演示程序 50积分/C币 立即下载
1/0