一段简单的Conncet代码,却总是返回 0x0000274d 错误
查了半天终于发现了问题。port忘记进行字节序转换了。
应该是addr.sin_port=htons(port);
问题解决了。
目标机器上指定的端口上并没有服务,当然会返回积极拒绝。
为了证实这一点,改一个再改一个错误的并不存在的端口号来试一下。
也是返回这个错误。
将服务端停掉,端口号正确也是返回这个错误。
以后再遇到这个问题应该考虑的是连接参数是否正确以及目标服务器的指定端口有没有打开。
WSADATA data;
memset(&data,0,sizeof(data));
WSAStartup(MAKEWORD(2,2),&data);
s_=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
memset(&addr,0,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr(ip);
addr.sin_port=port;
connect(s_,(sockaddr*)&addr,sizeof(addr));
另外BBS上的这个帖子的讨论对解决这个问题很有启发: