当前位置:网站首页>网络大作业心得笔记
网络大作业心得笔记
2022-08-04 05:27:00 【何亚告】
1.对#include“stdafx.h”的理解:
(参考:stdafx.h知识)
编译器通过一个头文件stdafx.h来使用预编译头文件
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
也就是说,对于需要使用MFC的一些工程,可能会遇到stdafx。
2.MFC下单文档、多重文档、基本对话框区别
单文档类似文本文件
多重文档类似word(可以同时打开多个文件)
基本对话框类似窗口
3.在OnInitDialog()中为编辑框初始化
SetDlgItemText(IDC_EDIT1,TEXT(“可爱的小何”));
CheckRadioButton函数(没用上)
4.EnableWindow禁用
(true)为开启,(false)为关闭
m_stopServer.EnableWindow(true);
5.MFC勾选使用winsocket则不用再添加头文件
自动调用AfxSocketInit()初始化
写Socket部分不用谢WSAStartup部分
6.阻塞(非阻塞)问题
m_stop.EnableWindow(true);
m_start.EnableWindow(false);
m_ListenSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(m_ListenSock==INVALID_SOCKET){
AfxMessageBox(_T("新建Socket失败!"));
return;
}
UINT uPort=GetDlgItemInt(IDC_EDIT1);
if(uPort<=0||uPort>65535){
AfxMessageBox(_T("端口非法"));
closesocket(m_ListenSock);
}
sockaddr_in service;
service.sin_family=AF_INET;
service.sin_addr.s_addr=INADDR_ANY;
service.sin_port=htons(uPort);
if(bind(m_ListenSock,(sockaddr*)&service,sizeof(sockaddr_in))==SOCKET_ERROR){
AfxMessageBox(_T("绑定端口失败!"));
closesocket(m_ListenSock);
}
if(listen(m_ListenSock,5)==SOCKET_ERROR){
AfxMessageBox(_T("监听失败!"));
closesocket(m_ListenSock);
}
sockaddr_in clientAddr;
int iLen=sizeof(sockaddr_in);
SOCKET accSock=accept(m_ListenSock,(struct sockaddr*)&clientAddr,&iLen);
if(accSock ==INVALID_SOCKET){
AfxMessageBox(_T("接收客户端失败!"));
closesocket(m_ListenSock);
}
accept()等连接
(干完活不回来,调用阻塞函数的线程被挂起)
界面卡死
异步I/O
select函数:去缓冲区“偷看”,有就返回其Socket集合
7.TCHAR
当没有定义_UNICODE宏时,TCHAR = char,_tcslen =strlen
当定义了_UNICODE宏时,TCHAR = wchar_t , _tcslen = wcslen
当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会摇身一变,变成了wchar_t。而未定义UNICODE宏时,TCHAR摇身一变,变成了unsignedchar。这样就可以很好的切换宽窄字符集。
8.ShowMsg()
void CChatRoomDlg::ShowMsg(CString strMsg)
{
m_MsgEdit.SetSel(-1,-1);
m_MsgEdit.ReplaceSel(strMsg+_T("\r\n"));
}
(这里真的好遗憾啊,我处理不了换行,所有的语句都还在一行)
(6.14:这个问题解决了)
为标记框绑定CEdit控件时要选上多行的属性,不然"\r\n"对其不起作用
边栏推荐
猜你喜欢
随机推荐
Oracle备份脚本
自己学习爬虫写的基础小函数
Unity Visual Effect Graph入门与实践
(Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析
关系型数据库-MySQL:二进制日志(binlog)
梳理CamStyle、PTGAN、SPGAN、StarGAN
Delphi-C side interesting menu operation interface design
C language -- operator details
NFT市场开源系统
phpexcel导出数据为xml
PHP课堂笔记(一)
FFmpeg源码分析:avformat_open_input
【Matlab仿真】:一带电量为q的电荷以速度v运动,求运动电荷产生磁感应强度
使用express-jwt第三方包报错TypeError: expressJWT is not a function
攻防世界MISC—MISCall
关于事件捕获和事件冒泡的顺序,以及如何处理事件冒泡带来的影响
php实现telnet访问端口
自动化运维工具Ansible(2)ad-hoc
webrtc中的引用计框架
解决JDBC在web工程中无法获取配置文件