void CSocketView::OnInitialUpdate()
{
CView::OnInitialUpdate();
WSADATA wsd;
WSAStartup(0x0101,&wsd);
CBlockingSocket zc;
CSockAddr zc_addr(INADDR_ANY,80);
zc.Create();
zc.Bind(zc_addr);
zc.Listen();
AfxBeginThread(SeverZcThread,GetSafeHwnd());
}UINT SeverZcThread(LPVOID P)
{
CSockAddr zc_addr;
CBlockingSocket zc;
char request[200];
AfxMessageBox("zhun bei le...");
if(g_sListen.Accept(zc,zc_addr)) //这里下边的代码都不晒我...
{
AfxBeginThread(SeverZcThread,P);
g_sListen.Receive(request,200,10);
//g_sListen.Send("Hello Socket!",13,13);
CDC *pDC;
pDC->TextOut(0,0,request);
AfxMessageBox("jie shou le...");
}
AfxMessageBox("shi bai le...");
return 0;}
CString g_strSeverName="localhost";void CSocketView::OnSocketClient()
{
CBlockingSocket zcClient;
char *buffer=new char[100];
int nBytes=0;
CSockAddr saSever,saClient;
zcClient.Create();
saSever=CBlockingSocket::GetHostByName(g_strSeverName,80);
zcClient.Connect(saSever);
zcClient.Send("Hello",5,5);
zcClient.Close();
AfxMessageBox("fa shong le..");
}
运行一直出现问题, 便是书山说if(g_sListen.Accept(zc,zc_addr))的地方会等待客户端的连接,可是每次运行直接就是执行了它下边的AfxMessageBox("shi bai le...");为什么我的客户端连接不上我的Sever? 求改代码
{
CView::OnInitialUpdate();
WSADATA wsd;
WSAStartup(0x0101,&wsd);
CBlockingSocket zc;
CSockAddr zc_addr(INADDR_ANY,80);
zc.Create();
zc.Bind(zc_addr);
zc.Listen();
AfxBeginThread(SeverZcThread,GetSafeHwnd());
}UINT SeverZcThread(LPVOID P)
{
CSockAddr zc_addr;
CBlockingSocket zc;
char request[200];
AfxMessageBox("zhun bei le...");
if(g_sListen.Accept(zc,zc_addr)) //这里下边的代码都不晒我...
{
AfxBeginThread(SeverZcThread,P);
g_sListen.Receive(request,200,10);
//g_sListen.Send("Hello Socket!",13,13);
CDC *pDC;
pDC->TextOut(0,0,request);
AfxMessageBox("jie shou le...");
}
AfxMessageBox("shi bai le...");
return 0;}
CString g_strSeverName="localhost";void CSocketView::OnSocketClient()
{
CBlockingSocket zcClient;
char *buffer=new char[100];
int nBytes=0;
CSockAddr saSever,saClient;
zcClient.Create();
saSever=CBlockingSocket::GetHostByName(g_strSeverName,80);
zcClient.Connect(saSever);
zcClient.Send("Hello",5,5);
zcClient.Close();
AfxMessageBox("fa shong le..");
}
运行一直出现问题, 便是书山说if(g_sListen.Accept(zc,zc_addr))的地方会等待客户端的连接,可是每次运行直接就是执行了它下边的AfxMessageBox("shi bai le...");为什么我的客户端连接不上我的Sever? 求改代码
{
CBlockingSocket m_socket=(CBlockingSocket)lparam;
UINT SeverZcThread(LPVOID P)
{
CBlockingSocket m_socket=(CBlockingSocket)lparam;//
CSockAddr zc_addr;
CBlockingSocket zc;
char request[200];
AfxMessageBox("zhun bei le...");
if(g_sListen.Accept(zc,zc_addr)) //这里下边的代码都不晒我...
{
AfxBeginThread(SeverZcThread,m_socket);//
g_sListen.Receive(request,200,10);
//g_sListen.Send("Hello Socket!",13,13);
CDC *pDC;
pDC->TextOut(0,0,request);
AfxMessageBox("jie shou le...");
}
AfxMessageBox("shi bai le...");
return 0;}这样的吗? 可是CBlockingSocket m_socket=(CBlockingSocket)lparam;会报错....
void CSocketView::OnInitialUpdate()
{
CView::OnInitialUpdate();
WSADATA wsd;
WSAStartup(0x0101,&wsd);
CBlockingSocket zc;
CSockAddr zc_addr(INADDR_ANY,80);
zc.Create();
zc.Bind(zc_addr);
zc.Listen();
AfxBeginThread(SeverZcThread,(LPVOID)zc);
}UINT SeverZcThread(LPVOID lparam)
{
CSockAddr zc_addr;
CBlockingSocket m_socket=(CBlockingSocket)lparam;
char request[200];
AfxMessageBox("zhun bei le...");
if(g_sListen.Accept(m_socket,zc_addr)) //这里下边的代码都不晒我...
{
AfxBeginThread(SeverZcThread,m_socket);
g_sListen.Receive(request,200,10);
//g_sListen.Send("Hello Socket!",13,13);
CDC *pDC;
pDC->TextOut(0,0,request);
AfxMessageBox("jie shou le...");
}
AfxMessageBox("shi bai le...");
return 0;}
CString g_strSeverName="localhost";void CSocketView::OnSocketClient()
{
CBlockingSocket zcClient;
char *buffer=new char[100];
int nBytes=0;
CSockAddr saSever,saClient;
zcClient.Create();
saSever=CBlockingSocket::GetHostByName(g_strSeverName,80);
zcClient.Connect(saSever);
zcClient.Send("Hello",5,5);
zcClient.Close();
AfxMessageBox("fa shong le..");
}另外为什么重复定义zc_addr,我觉的这也应用参数传递到线程.
CSockAddr zc_addr;
CBlockingSocket zc;
char request[200];
AfxMessageBox("zhun bei le...");
if(g_sListen.Accept(zc,zc_addr))// 这里下边的代码却永远不被执行..
{}CBlockingSocket m_socket=(CBlockingSocket)lparam;我这里会报错
'lparam' : undeclared identifier
AfxBeginThread(SeverZcThread,(LPVOID)zc);
....同样....麻烦各位老鸟了!!
http://www.codeproject.com/internet/chessserver.asp
http://www.codeproject.com/internet/serversocket.asp
AfxBeginThread(SeverZcThread,m_socket);//
g_sListen.Receive(request,200,10);
看看它會不會運行到這個地方,如果你的if(g_sListen.Accept(m_socket,zc_addr)) 語句中的g_sListen.Accept(m_socket,zc_addr) 返回false,你又怎麽能指望下面的代碼能得到執行呢?
CBlockingSocket m_socket=(CBlockingSocket)lparam;我这里会报错
'lparam' : undeclared identifier
爲什麽會出現這個錯誤呢,你的代碼好像寫的是
UINT SeverZcThread(LPVOID P)
{'lparam' 當然沒定義了,應該寫成CBlockingSocket m_socket=(CBlockingSocket)P;