刚才写一个简单通信例子出错了,在client端connect()执行时返回错误代码10061
这个错误是这样的: wsaeconnrefused (10061) connection refused. 因为目标主机主动拒绝,连接不能建立。这通常是因为试图连接到一个远程主机上不活动的服务,如没有服务器应用程序处于执行状态。 这个错误说得很广泛。首先要检查是否已经开启了server端 = =!,开启了之后又是否成功进行了accept和connect函数的设定(配对使用的嘛)。 connect的参数第一个是client端的socket,第二个是client端地址(输入要连接的IP和端口);而accept函数是对应的server端的socket和地址,它们返回的是各自接收到的socket。我想应该像下面图示那样有三个socket。不要像我这样把各个socket在函数参数中的位置弄乱了...
┏━━━━━━━┓ ┆ ┏━━━━━━━┓ ┃ 服务端socket ┃ ┆ ┃ 客户端socket ┃ ┗━━━┯━━━┛ ┆ ┗━━━┯━━━┛ ↑ ┏━━━━━━┓ ↓ └←←←←←←←┃传输的socket ┃←←←←←←← ←┛ ┗━━━━━━┛ ┆ server.cpp ┆ client.cpp
出错的也可能是地址设定不当的原因。我使用的是inet_addr转换IP,htons转换端口。
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//IP转换
ServerAddr.sin_port=htons(PORT);//端口转换
注意如果直接用sin_port=PORT是不行的。而IP不一定要字符串来转换,还有其他的不一一列举了。
最后还是两边的设置要配对呀~ 不然socket怎么知道去哪里?
|