ChinaUnix.net
相关文章推荐:

linux sendto返回值

如果send,sendto返回一个正数,那么我们是否可以理解这n个字节被对端协议栈收到了? 还是仅仅为这n个字节被写入到本机协议栈,至于是否被对端协议栈收到不确定?

by phoxia - 内核源码 - 2011-07-10 14:56:03 阅读(13661) 回复(6)

相关讨论

我想大家都知道在使用TCP协议时,调用send函数发送n个字节的数据,返回值有可能小于n,这时需要将剩下的数据发送出去,因为TCP是流协议嘛。 那么在使用UDP协议时,调用sendto函数,有可能返回值小于我的发送期望值吗?按照我到目前为止的经验看,还没有碰到这种情况,因为UDP是数据报,所以不会出现这种情况吗?想和各位大侠讨论一下,谢谢!

by kwokwind - C/C++ - 2004-12-29 09:50:46 阅读(4777) 回复(2)

setsockopt设置好了。。可是如上的问题。。

by Crazy_bun - Linux环境编程 - 2013-02-22 14:55:57 阅读(4900) 回复(4)

最近用netlink从内核态发送信息到用户空间,在用户空间通过UDP把从内核收到的数据发送到另一台电脑上,但是经常会出现丢包。。而且每次丢的包都是从内核接收到的前两个包(sendto返回值是成功的,这个不是代表已经把数据拷贝到内核了吗)。我利用wireshark抓包,发现根本就没有发送出去。这是为什么?

而且

by zydovech - 内核源码 - 2015-01-14 11:13:05 阅读(3464) 回复(6)

sendto返回实际发送的长度, 那比如我想发送10个字节, n=sendto(......,.......,10,....); if(n>0 && n!= 10) { sendto(......,......,10-n,....);//假设到第2次,10字节发送完成 } 这样的话,接收端调用recvfrom的时候是 分2次收到n字节和10-n字节 还是 一次收到10个字节?

by marco_hxj - C/C++ - 2009-04-20 08:59:47 阅读(6601) 回复(14)

当函数是判断时,一般返回0作为false, 非0作为true 当返回值代表状态时,0表示成功是普遍认同的, 但非0的情况下,正负返回值有什么区别,看APUE时,有时候返回-1,有时又返回1 知道的朋友说一下自己的理解,谢了

by _nothing - C/C++ - 2014-03-25 11:50:35 阅读(2020) 回复(5)

刚用到system函数,要根据其返回值来做进一步操作,可是system的返回值并不等于其调用的程序的返回值,man了没看懂,后来在网上搜索了一下,终于看到了一个DX的理解,记录之。 引自: 原文 [color="#0000ff"]要分成两部分来说:  1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的.  2,对于system函数,返回值是由两部分...

by piginthetree - Linux文档专区 - 2009-07-22 13:55:00 阅读(1712) 回复(0)

功能描述: 发送消息。send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。 用法: #include #include ssize_t send(int sock, const void *buf, size_t len, int flags); ssize_t sendto(int sock, const void *buf, size_t len, int fl...

by orine - Linux文档专区 - 2008-04-17 11:17:04 阅读(684) 回复(0)

在嵌入式的板子上,linux 2.6.20, 建立了一个UDP socket,前几次都是sendto成功的, 但几次之后会返回-1, 检查了errno后说是operation not permitted,有点奇怪,用户是使用root登录的,那位高人能帮忙解释一下,谢谢

by spark_zhao - Linux环境编程 - 2007-12-22 11:42:02 阅读(1187) 回复(0)

共享内存的基本用法: shmget shmat 调用都没有问题 对shmat做了封装,示意代码如下 char* LinkShm(int shm_id, int flag) { char *shmptr; shmptr = shmat(shm_id,NULL,flag); return shm_ptr; } 然后调用返回的值,一直是错误的,调用代码如下: char* shmptr; shmptr = LinkShm(shm_id,0); 使用gdb调试发现,函数LinkShm()中的shmptr的值是对的,返回给调用者指针shmptr时shmat返回的64位地址,高位4字节给截断了...

by kelvin_yin - Linux环境编程 - 2012-06-29 09:31:25 阅读(2166) 回复(3)

在写一本shell中有这样一段,想进行数据库expdp 导出,但当导出出错时 $?仍然返回0, 应该如何修改呢 谢谢 su - oracle -c "expdp system/$DB_SYSTEM_PASSWD schemas=$schemas include=table directory=TEMP_DIR1 dumpfile="$schemas"_USER.dmp logfile=exp"$schemas"_USER.log" >> $logfile SQLPLUS_RET=$? if [ ${SQLPLUS_RET} -eq 0 ]; then echo "NOTE: Data exporting succeeded without error !" ...

by pjghost - Linux新手园地 - 2012-04-01 15:18:48 阅读(1182) 回复(1)