15,471
社区成员
发帖
与我相关
我的任务
分享
UINT CMySerSocketDlg::ThreadSerFuc(LPVOID pParam)//线程函数,在头文件中已声明
{
WSADATA m_data;
CString m_Msg,mMsg1;
CWnd *hwnd=GetDlgItem(IDC_EDIT);
if(WSAStartup(MAKEWORD(2,2),&m_data)!=0)
{
m_Msg="Load Socket Library failed!";
hwnd->SetWindowText(m_Msg);
return -1;
}
m_Msg="ff";
hwnd->SetWindowText(m_Msg);
SOCKET SerSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
SOCKET CliSocket;
if(INVALID_SOCKET==SerSocket)
{
m_Msg="Create Socket Failed!";
hwnd->SetWindowText(m_Msg);
return -1;
}
sockaddr_in Seraddr,Cliaddr;
Seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
Seraddr.sin_family=AF_INET;
Seraddr.sin_port=htons(8000);
bind(SerSocket,(sockaddr*)&Seraddr,sizeof(Seraddr)+1);
int n=listen(SerSocket,5);
if(n==SOCKET_ERROR)
{
m_Msg="Listen failed!";
hwnd->SetWindowText(m_Msg);
return -1;
}
// m_Msg="服务器已启动,等待用户连接!";
// hwnd->SetWindowText(m_Msg);
CWnd *hwnd1=GetDlgItem(IDC_EDIT1);
while(true)
{
int m=sizeof(Cliaddr);
CliSocket=accept(SerSocket,(sockaddr*)&Cliaddr,&m);
char *recBuff=new char[100];
char *sendBuff=new char[100];
int length=_msize(recBuff);
sendBuff="Wellcom!";
send(CliSocket,sendBuff,length+1,0);
m_Msg=sendBuff;
hwnd->SetWindowText(m_Msg);
while(true)
{
recv(CliSocket,recBuff,length+1,0);
if(recBuff[0]=='q'||recBuff[0]=='Q')
{
m_Msg="用户请求退出!";
hwnd->SetWindowText(m_Msg);
return -1;
}
m_Msg=recBuff;
hwnd->SetWindowText(recBuff);
hwnd1->GetWindowText(mMsg1);
recBuff=mMsg1.GetBuffer(mMsg1.GetLength());
send(CliSocket,sendBuff,length+1,0);
mMsg1.ReleaseBuffer();
//mMsg1="";
}
}
closesocket(SerSocket);
WSACleanup();
}
void CMySerSocketDlg::OnSet()
{
AfxBeginThread(ThreadSerFuc,NULL);//创建一个线程,不知道如何传递参数了
// TODO: Add your control notification handler code here
}
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
AfxBeginThread(ThreadSerFuc,NULL);//创建一个线程,不知道如何传递参数了
AfxBeginThread(ThreadSerFuc, 0, THREAD_PRIORITY_NORMAL, 0, 0, NULL);