///////////////////////////server
WSADATA wsadata;                                 //初始化socket
if (WSAStartup(MAKEWORD(2,2),&wsadata)) {
AfxMessageBox("套接字初始化失败");
return;
}
ServerSocket=socket(AF_INET,SOCK_STREAM,0);     //创建套接字
if (ServerSocket==INVALID_SOCKET) {
AfxMessageBox("套接字创建失败");
return;
}
Sockaddr.sin_family=AF_INET;
Sockaddr.sin_port=htons(17951);
Sockaddr.sin_addr.S_un.S_addr=INADDR_ANY;
if (bind(ServerSocket,(LPSOCKADDR)&Sockaddr,sizeof(Sockaddr))==SOCKET_ERROR) {
AfxMessageBox("邦定套接字失败");
return;
}
if (listen(ServerSocket,5)==SOCKET_ERROR) {
AfxMessageBox("监听失败");
return;
}
CWinThread * hHandle;
hHandle = AfxBeginThread(ClientThread,(LPVOID)ServerSocket);
}
////////////////////////////////////////线程
UINT ClientThread(LPVOID ServerSocket)
{
SOCKET Client=(SOCKET)ServerSocket;
SOCKADDR_IN Clientaddr; int len;
CMyDlg *dlg=(CMyDlg*) AfxGetApp()->GetMainWnd();  //线程里调用主程序资源
len=sizeof(Clientaddr);
SOCKET sock=accept(Client,(LPSOCKADDR)&(Clientaddr),&len);
if (sock==INVALID_SOCKET)
dlg->m_list.InsertString(0,"accept错误");
else {
dlg->m_list.InsertString(0,"有客户端连接");
AfxBeginThread(ClientThread,0);   //开启另一个线程等待 }
AfxEndThread(0);
return 0;
} /////////////////////send
void CMyDlg::OnSend() 
{
// TODO: Add your control notification handler code here
int err,len;
strcpy(buf,"soso");
m_list.InsertString(0,buf);
len=sizeof(buf);
err=send(ServerSocket,buf,len,0);
if (err==SOCKET_ERROR) {
m_list.InsertString(0,"send错误");
}
}///////////////client
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2,2),&wsadata)) {
m_list.InsertString(0,"初始化失败");
return;
}
m_list.InsertString(0,"1"); ClientSocket=socket(AF_INET,SOCK_STREAM,0);
if (ClientSocket==INVALID_SOCKET) {
m_list.InsertString(0,"套接字创建失败");
return;
}
m_list.InsertString(0,"2"); Serveraddr.sin_family=AF_INET;
Serveraddr.sin_port=htons(17951);
Serveraddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
if (connect(ClientSocket,(LPSOCKADDR)&Serveraddr,sizeof(Serveraddr))==SOCKET_ERROR) {
m_list.InsertString(0,"无法连接服务器");
return;
}
m_list.InsertString(0,"3"); CWinThread* hHandle;
hHandle=AfxBeginThread(ServerThread,(LPVOID)ClientSocket);
}
////////////thread
UINT ServerThread(LPVOID ClientSocket)
{
int len;
CMyDlg *dlg=(CMyDlg*)AfxGetApp()->GetMainWnd();
len=sizeof(dlg->buf);
while (recv(dlg->ClientSocket,dlg->buf,len,0)!=SOCKET_ERROR) {  //接收数据
dlg->m_list.InsertString(0,dlg->buf);
dlg->m_list.InsertString(0,"4");
}
dlg->m_list.InsertString(0,"recv错误");
AfxEndThread(0);
return 0;
}
连接后总是send错误,不知道是何故?