#include <iostream>
#include <WinSock2.h>
#include <Windows.h>
using namespace std;
SOCKET listener,connector;
SOCKADDR_IN myAddress,remoteAddress;
int main()
{
初始化网络窗口
WSAData wdata;
WSAStartup(MAKEWORD(2,2),&wdata);
初始化侦听器
ZeroMemory(&listener,sizeof(listener));
ZeroMemory(&connector,sizeof(connector));
listener = socket(AF_INET,SOCK_STREAM,0);
为struct SOCKADDR_IN myAddress
指定值myAddress.sin_addr.s_addr = INADDR_ANY; //accept any ip
myAddress.sin_family = AF_INET;//tcp
myAddress.sin_port = htons(7000);//changing 7000 port to string with htons method
绑定侦听器套接字和地址以指示侦听器在哪里查找
if(bind(listener,(LPSOCKADDR)&myAddress,sizeof(listener)))
{
cout<< "bound";
}
//listen method
if(listen(listener,1));
{
cout<<"Waiting";
}
int Size = sizeof(remoteAddress);
初始化无限循环以继续监听
while(true)
{
connector = accept(listener,(LPSOCKADDR)&remoteAddress,&Size);
//read connection request
if(sizeof(connector)< 0)
{
cout <<"noinfo\n";
}
}
}
即使没有连接客户端,代码也不会显示“无信息”:O我duno wat我做错了:(请帮帮我
答案 0 :(得分:1)
当然可以。您的代码中存在许多错误:
1)您的connector
的大小不能小于0,因此if(sizeof(connector)< 0)
检查始终为false。请改用if(connector == INVALID_SOCKET)
。
2)在;
语句末尾删除if
,否则您的检查变得毫无意义:
if(bind(listener,(LPSOCKADDR)&myAddress,sizeof(listener))) {...}
if(listen(listener,1)) {...}
P.S。发布剩下的代码,我确定还有很多其他错误等待发现。
答案 1 :(得分:0)
您的代码是正确的,但您必须用零填充结构myAddress而不是Socket
ZeroMemory(&myAddress,sizeof(myAddress));
条件语句后的分号是没用的