hu-unix connect() 问题 急谢谢
int connectSocket(socket_t tsocket, const char * ip, short port)
{
struct sockaddr_in addr;
memset(&addr, 0, sizeof(struct sockaddr_in));
//新添加 解决对方服务器没有开机阻塞问题aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
int flags;
int retcode;
fd_set rdset;
struct timeval tv;
int ret;
//新添加 解决对方服务器没有开机阻塞问题aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
if(tsocket > 0) //连接目标机
{
//下面获取套接字的标志
if ((flags = fcntl(tsocket, F_GETFL)) < 0)
{
etsDebug(0, "获取套接字的标志错误[%d]", flags);
return -1;
}
//下面设置套接字为非阻塞
if (fcntl(tsocket, F_SETFL, flags | O_NONBLOCK) < 0)
{
etsDebug(0, "设置套接字为非阻塞错误[%d]", flags);
return -1;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
if(!ip)
{
addr.sin_addr.s_addr = 0;
}
else
{
addr.sin_addr.s_addr = inet_addr(ip);
//memcpy(&addr.sin_addr, ip, sizeof(ip));
}
ret = connect(tsocket, (const struct sockaddr*)&addr, sizeof(struct sockaddr));
}
连接远程ip 在非阻塞模式下返回值总是为-1。但在阻塞模式下能连接成功 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论