今天测试一个本地网络通讯,在ubuntu虚拟机下出现的问题,警报:accept: Invalid argument

初始化地方:

socklen_t clilen;
struct sockaddr_in clientaddr;

问题点:

connfd = accept(listenfd,(sockaddr *)&clientaddr,&clilen);

后面google网络上相关问题之后原来是

http://blog.csdn.net/xbl1986/article/details/3525621

问题就出在accept的第3个参数:必须为正数,由于没有初始化,得到的值可能是负数。

把那个变量初始化一下就好了

  先尝试修改clilen 参数为正,运行表明没有出现这个问题了:

  clilen= 1;                               //假如改为正

    struct sockaddr_in clientaddr;

    connfd = accept(listenfd,(sockaddr *)&clientaddr,&clilen);

但是要做如下修改:

    socklen_t clilen= sizeof(struct sockaddr);   // 这样才是正确的设置    
    struct sockaddr_in clientaddr;


    connfd = accept(listenfd,(sockaddr *)&clientaddr,&clilen);

---------------------------------------------------------------------------------------------------------

更详细的了解原因,上面的答案可以解决问题,如果想知道更了解细节,可以看下面的个人总结

-----------------------------------------------------------------------------------------------------------

从本函数的描述上看,长度不能小于0 ,否则会出错,如果没有对长度初始化,可能会得到负值。

可以在运行的时候打印addrlen 这个值,当没有初始化的时候,打印得到的是负值。

accept: Invalid argument linux 网络编程的更多相关文章

  1. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    [Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...

  2. Linux网络编程(三)

    Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...

  3. Proxy源代码分析——谈谈如何学习Linux网络编程

    Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该 ...

  4. Linux网络编程:一个简单的正向代理服务器的实现

    Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该 ...

  5. Proxy源代码分析--谈谈如何学习Linux网络编程

    http://blog.csdn.net/cloudtech/article/details/1823531 Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux ...

  6. 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"

    [深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...

  7. 【linux草鞋应用编程系列】_5_ Linux网络编程

    一.网络通信简介   第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章.   二.linux网络通信     在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...

  8. Linux 网络编程(IO模型)

    针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...

  9. linux网络编程 no route to host 解决方案

    linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料h ...

随机推荐

  1. 辽宁OI2016夏令营模拟T2-road

    最短路(road.pas/c/cpp)题目大意有一个点数为 n,边数为 m 的无向图,点的编号为 1 到 n.边的权值均为非负数.现在请你求出从点 1 到点 n 的最短路径条数,若有无限条则输出-1, ...

  2. HDU 1008 u Calculate e

    Problem Description A simple mathematical formula for e is where n is allowed to go to infinity. Thi ...

  3. 关于百度地图API (持续跟新)

    一.初始化地图显示不在正中间,出现偏移 问题描述与解决办法: 代码: body, html, #allmap { width: 100%; height: 100%; overflow: hidden ...

  4. OSCache 使用

    引入OSCache的jar包 package com.sun.utils; import java.util.Date; import com.opensymphony.oscache.base.Ne ...

  5. CKEditor 案例

    官网下载: http://ckeditor.com/download 将下载的ckeditor整个文件放入项目中 在页面中引用ckeditor.js,并用新建一个<textarea>再建一 ...

  6. hive UDF添加方式

    hive UDF添加的方式 1.添加临时函数,只能在此会话中生效,退出hive自动失效 hive> add jar /home/jtdata/hiveUDF/out0.jar; Added [/ ...

  7. ZUFE 1035 字符宽度编码(字符串)

    Time Limit: 1 Sec  Memory Limit: 128 MB Description 你的任务是编写一个程序实现简单的字符宽度编码方法.规则如下:将任何2~9个相同字符的序列编码成2 ...

  8. LeetCode OJ 34. Search for a Range

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  9. 一把刀终极配置 For XP v2.0 免费绿色版

    软件名称: 一把刀终极配置 For XP 软件语言: 简体中文 授权方式: 免费软件 运行环境: WinXP 软件大小: 924KB 图片预览: 软件简介: 一把刀终极配置 For XP,用于快速方便 ...

  10. Mybatis批量更新数据

    转载:http://blog.csdn.net/tolcf/article/details/39213217 第一种方式 <update id="updateBatch" p ...