我有一个使用 Winsock 用 MFC 编写的客户端和服务器。它们仅在它们位于同一台计算机上(即“127.0.0.1”)时才起作用,但是一旦我尝试从另一台计算机连接客户端,我就会收到错误代码 10060,这是一个超时错误。我不确定这是否相关,但是一台计算机连接到域(它是学校计算机),另一台位于工作组下,因此不确定这些是否导致问题。这是一些代码,服务器对象链接到我从 CSocket 派生的类。
客户
if(client.Create() != true)
AfxMessageBox(L"FAILED");
UINT port = 200;
client.Connect(L"IP ADDRESS",port); //fails here
int msg = client.GetLastError();
CString c_msg;
c_msg.Format(L"%d",msg);
AfxMessageBox(c_msg); //displays error code
服务器
int i_port = 80;
server.Bind(server.Create(0,SOCK_STREAM,NULL)); // saw somewhere that i should bind the socket
if(server.Listen() == false)// if listen() fails
{
AfxMessageBox(L"Could not Listen on specified Port \n Please select a different one.");
server.Close();// close server
}
c_List.AddString(L"Server Listening");// notfiy user server is listening in ListBox
服务器接受功能
CString userIp; //string
CString u_Status("Connection made from IP Address:"); //string
UINT userPort = 0; //integer
if(server.Accept(client))// if server sucessfully accepts client then
{
client.GetSockName(userIp,userPort); // get client IP and Port number and assign to variables
u_Status = u_Status + userIp; // string additon
ListStatus = u_Status; // assigning local value to global string
conIp = true; // change boolean to true
}