unhandled exception in *exe(MFC42D.DLL),该如何处理

unhandled exception in **.exe(MFC42D.DLL)
代码如下:
UINT MTServerThread(LPVOID pParam); //线程
//BOOL SendFile(CSocket s, CString fname);//函数声明有问题...----
BOOL SendFile(SOCKET s, CString fname);
UINT ServerThread(LPVOID pParam)
{
  CString params;
char buff[512];
bool j;

HWND hDlg= FindWindow(NULL,"realserver");
CListBox *m_list = (CListBox *)GetDlgItem(hDlg,IDC_LIST1); // 在此添加额外的初始化代码

SOCKET client=(SOCKET )pParam;
params.Format("Starting up TCP server\r\n");
  m_list->AddString(params);

  // SOCKET实际上是一个unsigned int类型
  SOCKET server;
  // WSADATA结构将有WSAStartup函数来填充
  WSADATA wsaData;
  // 对TCP/IP 套接字来说,sockaddr_in结构指定了套接字的地址
  // 其他协议使用相似的结构
  sockaddr_in local;
  // WSAStartup函数负责加载Winsock库的函数
  // 第一个参数用来指定想要加载的Winsock库的版本
  int wsaret=WSAStartup(0x101,&wsaData);
  // 调用成功,WSAStartup函数返回0
  // 失败的话,程序就退出
  if(wsaret!=0)
  {
  return 0;
  }
  // 现在我们填充sockaddr_in结构
  local.sin_family=AF_INET; // 地址家族Address family
  local.sin_addr.s_addr=INADDR_ANY; // 要求使用当前主机配置的所有IP地址
  local.sin_port=htons((u_short)20248); // 使用的端口
  // socket函数用来创建我们的SOCKET
  server=socket(AF_INET,SOCK_STREAM,0);
  // 如果socket()函数调失败,我们退出
  if(server==INVALID_SOCKET)
  {
  return 0;
  }
// 为套接字关联本地地址的函数是bind.
// bind函数用在没有建立连接的套接字上,它的作用是绑定面向连接的或者无连接的套接字。
// 套接字被socket函数创建以后,存在于指定的地址家族里,但它是未命名的。
// bind函数通过安排一个本地名称到未命名的socket建立此socket的本地关联。
// 本地名称包含3个部分:主机地址、协议号(分别为UDP或TCP)和端口号。
  if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
  {
  return 0;
  }
  // listen函数设置套接字进入监听状态 
  // 为了接受连接,首先使用socket函数创建一个套接字,然后使用bind函数将它绑定到一个本地地址,
// 再用listen函数为到达的连接指定一个backlog,最后使用accept接受请求的连接。
  // 函数的第二个参数是backlog值
  if(listen(server,10)!=0)
  {
  return 0;
  }
  // 我们需要变量在保存客户套接字,下面是这些变量的定义

  sockaddr_in from;
  int fromlen=sizeof(from);
  // 下面进入无限循环
  while(true)
  {
  char temp[512];
  // accept() 将接受到了的客户连接
  client=accept(server,(struct sockaddr*)&from,&fromlen);

j=SendFile(client,params);
while(j=true)
{
params.Format("File sent successfully\r\n");
m_list->AddString(params);
break;
}


// 关闭客户套接字
closesocket(client);
}
// closesocket()关闭套接字,并且释放套接字描述表
closesocket(server);
// 每一个对WSAStartup的调用必须对应一个对WSACleanup的调用,这个函数释放Winsock库
WSACleanup();
return 0;
}


void CRealserverDlg::OnButton1() 
{

AfxBeginThread(ServerThread,0);

}


void CRealserverDlg::OnSelchangeList1() 
{
// TODO: Add your control notification handler code here

}






// int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
// {
// int nRetCode = 0;
// cout << "Press ESCAPE to terminate program\r\n";
// AfxBeginThread(ServerThread,0);
// while(_getch()!=27);
// return nRetCode;
// }



BOOL SendFile(SOCKET s, CString fname)
{
CFile f;
BOOL p=f.Open("e:\\wanna.mp3",CFile::modeRead);
char buff[1024];
int y;
int x;
if(!p)
return false;
while(true)
{
y=f.Read(buff,1024);
x=send(s,buff,y,0);
if(y<1024)
{
f.Close();
break;