C++ 我的服务器代码(c+;+;)有什么问题

C++ 我的服务器代码(c+;+;)有什么问题,c++,client,C++,Client,我几乎完成了这个服务器的制作,但在我完成之前,我想测试它,但当我这样做的时候,它总是在任何人连接到它之前说“已连接”。我想让它说,当有人真的连接到它时,“连接已达到”。有什么帮助吗 #pragma comment(lib, "Ws2_32.lib") #include<iostream> #include<WinSock2.h> using namespace std; int main() { WSAData wsa; int iresult =WS

我几乎完成了这个服务器的制作,但在我完成之前,我想测试它,但当我这样做的时候,它总是在任何人连接到它之前说“已连接”。我想让它说,当有人真的连接到它时,“连接已达到”。有什么帮助吗

#pragma comment(lib, "Ws2_32.lib")
#include<iostream>
#include<WinSock2.h>

using namespace std;

int main()
{

   WSAData wsa;

   int iresult =WSAStartup(MAKEWORD(2,1), &wsa);

   SOCKADDR_IN Server;

   Server.sin_addr.s_addr=inet_addr("127.0.0.1");

   Server.sin_family = AF_INET;

   Server.sin_port = 6667;

   SOCKET Listen =(AF_INET,SOCK_STREAM,NULL);

   listen (Listen, SOMAXCONN);

   bind(Listen,(SOCKADDR*)&Server,sizeof(Server));

   SOCKET Connect =(AF_INET,SOCK_STREAM,NULL);

   int size = sizeof(Server);

   std::cout<<"Waiting for connections";

   for(;;)
   {
    if(Connect=accept(Listen,(SOCKADDR*)&Server,&size)) {
        std::cout<<"connection was reached";
        break;
        }
    }


  WSACleanup();

  cin.get();

  return 0;
}
#pragma注释(lib,“Ws2_32.lib”)
#包括
#包括
使用名称空间std;
int main()
{
WSAData wsa;
int-iresult=WSAStartup(MAKEWORD(2,1)和wsa);
服务器中的SOCKADDR_;
Server.sin_addr.s_addr=inet_addr(“127.0.0.1”);
Server.sinu family=AF\u INET;
Server.sin_port=6667;
套接字侦听=(AF_INET,SOCK_STREAM,NULL);
听着(听着,索马克斯康);
绑定(侦听,(SOCKADDR*)和服务器,sizeof(服务器));
套接字连接=(AF_INET,SOCK_STREAM,NULL);
int size=sizeof(服务器);
一个问题是:

Server.sin_port = 6667;
端口号必须按网络字节顺序排列,这与普通x86平台的字节顺序相反

Server.sin_port = htons(6667);
您的代码还存在许多其他问题,例如Joachim Isaksson在评论中指出的问题

还有一点:

if(Connect=accept(Listen,(SOCKADDR*)&Server,&size))

您必须记住,
accept
在出错时返回
SOCKET\u ERROR
(或
-1
),即“true”

SOCKET Listen=(AF\u INET,SOCK\u STREAM,NULL);
SOCKET Connect=(AF\u INET,SOCK\u STREAM,NULL)
在这种情况下没有什么意义。也许它们应该被调用?@JoachimIsaksson那么我应该摆脱它吗?如果我应该,我该怎么做呢?我想说的是你可能想写
SOCKET Listen=SOCKET(AF_INET,SOCK_STREAM,NULL)
@JoachimIsaksson我已经修复了。你看到我的代码还有什么问题吗?那么你是说如果(Connect=accept(Listen,(SOCKADDR*)和Server,&size))不应该在那里还是什么?如果不应该,应该是什么?就是这样confusing@user2626734我的意思是,无论是正确的接受还是出现错误,条件都是正确的。首先调用
accept
,然后分别检查错误,这样可能会更容易。