实习期间,项目要求学习MFC编程和SOCKET编程,先写了一个入门的小程序来熟悉一下。
服务器的界面图:
为了简化,将服务器的IP和Port固定为127.0.0.1和5000
【启动】按钮用来启动服务器
代码:
void CServerDlg::OnBnClickedStartButton()
{
// TODO: 在此添加控件通知处理程序代码
if(0 != WSAStartup(MAKEWORD(2,2),&wsaData))
{
SetDlgItemText(IDC_STATE_EDIT,_T("打开WinSock失败!"));
return;
}
sListen = socket(AF_INET,SOCK_STREAM,0);
if(sListen == INVALID_SOCKET)
{
SetDlgItemText(IDC_STATE_EDIT,_T("创建监听套接字失败!"));
return;
}
serverAddr.sin_family = AF_INET;
// serverAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
serverAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
serverAddr.sin_port = htons(m_Port);
if(0 != bind(sListen,(const sockaddr*)&serverAddr,sizeof(serverAddr)))
{
SetDlgItemText(IDC_STATE_EDIT,_T("绑定IP和端口号失败!"));
return;
}
if(0 != listen(sListen,5))
{
SetDlgItemText(IDC_STATE_EDIT,_T("建立监听队列失败!"));
return;
}
SetDlgItemText(IDC_STATE_EDIT,_T("服务器启动成功"));
//创建线程,负责监听
RECVPARAM *pRecvParam