socket的accept: Invalid argument问题
void local_sdk_server::wait_remote_client_connect_and_comm()
{
/*服务器服务启动,等待客户端的链接的到来*/
//sockaddr_in client_addr;
sockaddr client_addr;
socklen_t len;
user users;//client
string operation_key;
string operation_value;
ROS_INFO( "Watting connect......................." );
len = ;
int accept_fd = accept( listen_fd, &client_addr, &len );
if( accept_fd < )
{
ROS_ERROR("errno is %s",strerror(errno));//strerror(errno)转换错误码为对应的错误信息
ROS_ERROR("accept failed accept_fd is %d", accept_fd);
}
if( accept_fd >= )//用户连接成功,返回的新的文件描述符 { ROS_INFO( "accept_fd: %d", accept_fd );
...
问题现象:
server运行在accept函数处等待client的连接,当有client来连接时,accept函数返回值为-1(错误).
问题解决:
为知道是什么原因导致了accept返回失败,添加 ROS_ERROR("errno is %s",strerror(errno));(printf在此处打印不出来),打印出错误原因为Invalid argument(此时可以百度),即accept函数的参数无效,检查发现len只进行了定义socklen_t len,未进行初始化,对其初始化后问题解决.
问题总结:
1.在另外一辆IGV上没有出现上述问题,并不代表程序没有问题,往往是因为系统对未初始化的参数处理不同,所以运行结果可能是成功的.
2.一定要注意对定义的参数进行初始化,否则可能会是意向不到的数,进而影响程序.
socket的accept: Invalid argument问题的更多相关文章
- accept: Invalid argument linux 网络编程
今天测试一个本地网络通讯,在ubuntu虚拟机下出现的问题,警报:accept: Invalid argument 初始化地方: socklen_t clilen;struct sockaddr_in ...
- accept:Invalid Argument
错误 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int accept(int sockfd, ...
- invalid argument (errno: 22)
socket通信示例中,当accept客户端时,经常报这个错误. 并且是第一次没有问题,第二次或后面几次都会出现如下问题, 错误码为22, 错误描述为invalid argument. 问题解决如下: ...
- fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument
fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument <error>status:4 er ...
- bind: Invalid argument
出现此问题在于,listen函数在socket函数和bind函数之间. 例: /*客户端程序开始建立sockfd描述符*/ listenfd = socket(AF_INET,SOCK_STREAM, ...
- cpprestsdk同时使用boost.asio,acceptor就一直报Invalid argument。
本文目录,首先总结问题,然后案例还原. 总结: 问题的根本在于boost.asio作为header-only库,运行程序与动态库之间容易因为版本错配而产生运行期莫名其妙的问题. cpprestsdk使 ...
- file_put_contents 错误:failed to open stream: Invalid argument 一种原因
今天在测试nilcms系统的时候,出现了一个报错,导致缓存无法更新: file_put_contents(C:\UPUPW_AP5.4\vhosts\d.tv\NilCMS_APP\include_r ...
- fdisk添加分区引起的Linux Error: 22: Invalid argument
在Linux服务器(虚拟机)上使用fdisk添加分区.格式化分区后,遇到了Linux Error: 22: Invalid argument错误,操作步骤如下所示 [root@oracle-serve ...
- -bash: ulimit: pipe size: cannot modify limit: Invalid argument
从root账号切换到oracle账号时,出现了"-bash: ulimit: pipe size: cannot modify limit: Invalid argument"提示 ...
随机推荐
- 【laravel】【转发】laravel 导入导出excel文档
1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和 导出 ...
- 创建 Django 步骤
1.创建项目 django-admin startproject 项目名称 2.创建APP python manage.py startapp app名称 3.修改settings.py文件 3.1设 ...
- Manjaro 添加国内源和安装搜狗输入法
Manjaro 系统虽然比 Ubuntu 用着稳定,但有些小地方没有 Ubuntu 人性化,比如默认安装完的系统貌似没有中国的,Ubuntu 估计是用的人多,所以安装完后会根据所在地给你配置更新的源. ...
- Python爬虫,爬取实验楼全部课程
目的: 使用requests库以及xpath解析进行实验楼所有课程,存入MySQL数据 库中. 准备工作: 首先安装,requests库,lxml库,以及peewee库.在命令行模式,使用以下命令. ...
- LightOj:1265-Island of Survival
Island of Survival Time Limit: 2 second(s) Memory Limit: 32 MB Program Description You are in a real ...
- linux学习-CentOS 7 环境下大量建置账号的方法
一些账号相关的检查工具 pwck pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息, 还可以比对 /etc/passwd /etc/shadow ...
- js实现获取当前时间是本月第几周的方法
这篇文章主要介绍了js实现获取当前时间是本月第几周的方法,涉及javascript针对日期及时间的相关操作技巧,非常简单实用,需要的朋友可以参考下. 本文实例讲述了js实现获取当前时间是本月第几周的方 ...
- iframe内容刷新
经常有嵌套的iframe的内容无法及时刷新,需要手动刷新,这时候就需要获取iframe,然后调用对象的reload, document.getElementById(iframe的id).conten ...
- 如何打造一个"逼格"的web前端项目
最近利用空余的时间(坐公交车看教程视频),重新了解了前后端分离,前端工程化等概念学习,思考如何打造一个“逼格”的web前端项目. 前端准备篇 前端代码规范:制定前端开发代码规范文档. PS:重中之中, ...
- Selenium WebDriver-actionchain模拟键盘操作
#encoding=utf-8 import unittest import time import chardet from selenium import webdriver from selen ...