一个SOCKET的小问题
这是server端的程序
WSADATA wsaData;
BOOL ret = WSAStartup(MAKEWORD(2,2), &wsaData);
if(ret != 0)
{
MessageBox(_T("初始化套接字失败!"));
return;
}
//创建服务器端套接字
serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(serverSocket == INVALID_SOCKET)
{
MessageBox(_T("creat wrong!"));
closesocket(serverSocket);
WSACleanup();
return ;
}
//绑定到本地一个端口上
sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(4000);
localaddr.sin_addr.s_addr =htonl(INADDR_ANY);
if(bind(serverSocket ,(const struct sockaddr*)&localaddr,sizeof(sockaddr)) == SOCKET_ERROR)
{
MessageBox(_T("绑定地址失败!"));
closesocket(serverSocket);
WSACleanup();
return;
}
//注册网络异步事件,m_hWnd为应用程序的主对话框或主窗口的句柄
WSAAsyncSelect(serverSocket, m_hWnd,NETWORK_EVENT, FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE);
listen(serverSocket, 5); //设置侦听模式
int len = sizeof(sockaddr_in);
sockaddr_in clientaddr_in;
SOCKET clientSocket = accept(serverSocket, (struct sockaddr*)&clientaddr_in, &len);
//MessageBox(_T("失败!"));
return;
}
这是client端的程序
WSADATA wsaData;
BOOL ret = WSAStartup(MAKEWORD(2,2), &wsaData);
UpdateData(true);
CString servername ;
c_ip.GetWindowTextW(servername ); //读取服务器名称
int port;
port = 70;
//获取端口
sockaddr_in serveraddr;
//UpdateData(TRUE);
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(4000);
serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(clientsocket,(sockaddr*)&serveraddr,sizeof(serveraddr))!=0)
{MessageBox(_T("连接失败"));return;}
else
MessageBox(_T("连接成功"));
CString str;
str.Format(_T("a----->%s"),_T("进入聊天室"));
c_list.AddString(str);
int num =send(serversocket,(LPSTR)str.GetBuffer(0),str.GetLength(),0);
}
我在同一台机子上试的,先打开server的exe
在打开client的exe,为什么总在client的连接那里出错呢
不 是说127.0.0.1是一个回路吗
总是连不上啊
大家帮帮忙啊