- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络编程概论
第9章 网络编程;9.1 聊天室程序;客户端应用程序;9.1.2 程序开发步骤;9.2 CSocket程序设计基础;9.2.1 计算机名、IP地址和端口;IP地址的分类;域名系统;;;3. 端口
通讯进程 = IP地址 + 端口
有些为特殊目的端口,如80-http;
25-ftp;
其它为自由端口;9.2.2 WinSock和MFC;流式套接口;数据报套接口;MFC中提供了两个类用于WinSock编程:CAsyncSocket类和CSocket类;CAsyncSocket类;CSocket类;注意:; 函数;9.2.3 WinSock的工作原理;有连接的通信;WinSock进行有连接的通信模型;在有客户连接请求之前,服务器线程或进程将会阻塞,直到有客户程序成功地连接到了服务器上后才继续往下运行
在单线程的应用程序中,服务器线程或进程阻塞就意味着整个应用程序都无法继续运行,可以选择多线程的方式来解决;解决阻塞问题的方案;利用WinSock进行无连接的通信;发送数据
int CAsyncSocket::SendTo(
cont void * lpBuf,
int nBufLen,
UINT nHostPort,
LPCTSTR lpszHostAddress = NULL,
int nFlag = 0);;接收数据
int CAsyncSocket::ReceiveFrom(
void * lpBuf,
int nBufLen,
CString rSocketAddress
UINT rSocketPort,
int nFlags = 0);
;2. 无连接通讯模型;利用UDP协议发送和接收都可以是双向的,就是说,任何一个主机都可以发送和接收数据
UDP协议是无连接的,所以发送的数据不一定能被接收,接收的顺序也有可能与发送的顺序不一致;发送方在端口800上向接收方端口900发送数据的部分子函数;
void CMyClientDlg::OnTimer(UINT nIDEvent)
{
char szRecv[20];
int iRecv = m_socketRecv.ReceiveFrom(szRecv,10,m_ip,m_port,0);
szRecv[iRecv]=‘\0’;
m_edit1= szRecv;
UpdateData(false);
CDialog::OnTimer(nIDEvent);
};
void CMyserverDlg::OnLink()
{
UpdateData(true);
m_socketSend.Creat(m_port,SOCK_DGRAM,NULL);
m_socketSend.Bind(m_port,m_ip);
SetTimer(1,3000,NULL);
......
};
void CMyserverDlg::OnTimer(UINT nIDEvent)
{
Static iIndex=0;
char szSend[20]=“1234567890”;
sprintf(szSend, “%d”,iIndex++);
m_transmit_info = sz;Send;
Updatedata(false);
int iSend = m_socketSend.SendTo(szSend,10,m_port,m_ip,0);
CDialog::OnTimer(nIDEvent);
};9.3 基于CSocket的网络编程;服务器端;客户端;9.4 聊天室客户端应用程序;;;9.4.2 可视化设计;9.4.3 创建一个新类CWCSock;;;9.4.4 修改CWCSocket类;(2) 在CWCSock类中添加数据成员;(3) 在WCSock.h中定义自定义消息,以使CWCSock能够同应用程序主窗口通信;(4) 编写OnReceive()函数代码;void CWCSock::OnReceive(int nErrorCode)
{
//TODO:Add your specialized code here and/or call the base class
if (Receive (m_Dat,sizeof(m_Dat))= = sizeof(m_Dat))
::PostMessage(::AfxGetApp
文档评论(0)