1. 程式人生 > >Linux下send、sendto、sendmsg函式分析

Linux下send、sendto、sendmsg函式分析

to:指向存放接收端地址的區域,可以為NULL。
tolen:以上記憶體區的長度,可以為0。
msg:指向存放傳送訊息頭的記憶體緩衝,結構形態如下

struct msghdr {
    void         *msg_name;     


    socklen_t     msg_namelen;   
    struct iovec *msg_iov;       
    size_t        msg_iovlen;    
    void         *msg_control;   
    socklen_t     msg_controllen;
    int           msg_flags;     
};


可能用到的資料結構有

struct cmsghdr {
    socklen_t cmsg_len;    
    int       cmsg_level;  
    int       cmsg_type;   
   
};
返回說明:  
成功執行時,返回已傳送的位元組數。失敗返回-1,errno被設為以下的某個值  
EACCES:對於Unix域套接字,不允許對目標套接字檔案進行寫,或者路徑前驅的一個目錄節點不可搜尋
EAGAIN,EWOULDBLOCK: 套接字已標記為非阻塞,而傳送操作被阻塞
EBADF:sock不是有效的描述詞
ECONNRESET:連線被使用者重置
EDESTADDRREQ:套接字不處於連線模式,沒有指定對端地址
EFAULT:記憶體空間訪問出錯
EINTR:操作被訊號中斷
EINVAL:引數無效
EISCONN:基於連線的套接字已被連線上,同時指定接收物件
EMSGSIZE:訊息太大
ENOMEM:記憶體不足
ENOTCONN:套接字尚未連線,目標沒有給出
ENOTSOCK:sock索引的不是套接字
EPIPE:本地連線已關閉

相關推薦

Linuxsendsendtosendmsg函式分析

to:指向存放接收端地址的區域,可以為NULL。 tolen:以上記憶體區的長度,可以為0。 msg:指向存放傳送訊息頭的記憶體緩衝,結構形態如下 struct msghdr {     void         *msg_name;          socklen_t     msg_namele

阻塞模式和非阻塞模式sendsendtorecvrecvfrom的表現

首先socket在預設情況下是阻塞狀態的(未指非同步操作以及其它一些特殊用途下,直接預設為非阻塞),這就使得傳送以及接收操作處於阻塞的狀態,即呼叫不會立即返回,而是進入睡眠等待操作完成。下面把討論點分為傳送以及接收。  一.傳送選用send(這裡特指TCP)以及sendto(

Linux用戶組文件權限詳解

目錄 管理權限 權限不足 日期 查看 add 綜合案例 天然 width 在linux中的每個用戶必須屬於一個組,不能獨立於組外。在linux中每個文件有所有者、所在組、其它組的概念 - 所有者 - 所在組 - 其它組 - 改變用戶所在的組 所有者 一般為文件的創建者,

Linux的之touchmvcprm

linux touch mv cp rm touch 新建文件 touch 文件名 例如: touch file1 在當前目錄新建名為file1的文件 註意: 1)同一目錄無法創建同名的文件 2)Linux的文件名是區分大小寫的 mv 修改文件名(或者目錄的名

linux的權限特殊權限acl

權限 suid sgid acl 首先,我們都知道Linux是一個多用戶操作系統,那麽問題就來了,假設我有一個文件叫file1,這個文件是用戶user1的,user1有一個項目組g1,他希望他項目組裏的同事可以查看修改這個文件,但是不希望其他人看到文件中的內容當然也不能編輯。那怎麽解決這個問題

LinuxTomcat的啟動關閉

lpad ade web dir xms 僵屍 fun table linux下 在Linux系統下,啟動和關閉Tomcat使用命令操作。 進入Tomcat下的bin目錄 1 cd /java/tomcat/bin 啟動Tomcat命令

LinuxElasticSearch6.4.xElasticSearch-HeadKibana以及中文分詞器IK的安裝配置

ElasticSearch 安裝配置 下載 # 官網下載壓縮包 [[email protected] /home]#  wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.

Linuxjava獲取CPU記憶體磁碟IO網路頻寬使用率

原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p

LinuxTomcat的安裝啟動關閉以及配置檔案的修改

安裝 前往tomcat官網https://tomcat.apache.org下載需要的版本。下面以 tomcat8 為例,下載過程如下: 設tomcat安裝包所在目錄為tomcat_download,使用如下命令解壓到資料夾中即完成安裝: tar -xvzf apache-

linuxc程式 daemonfork與建立pthread的順序問題

近期發如今寫linux c服務程式的時候,daemon與執行緒建立之間出現故障。發現程式在daemon之後,起的執行緒就全掛了。 查過一些文件之後,最終知道了why. daemon函式的操作事實上非常easy, 1.fork一個程序,2.處理

Centons7安裝配置FlumeLinux安裝配置FlumeFlume的簡單使用示例Flume整合Kafka使用

本篇文章主要介紹在windows下使用vmware虛擬機器中的Linux(Centons7)下配置安裝Flume。 目前Flume 的最新版本為1.8,筆者安裝的是1.6,是Flume的一個經典版本,通常在生產環境中使用的就是這個版本,在安裝Flume前,看先它的前置條件  (1)

Linux檢視記憶體型號主機板硬碟等等

首先檢視是否安裝了dmidecode工具 [[email protected] ~]# dmidecode Linux 檢視記憶體的插槽數,已經使用多少插槽.每條記憶體多大: [[email protected] ~]# dmidecode|grep -

Linux檔案解壓縮軟體安裝

1、linux常用解壓縮命令:.zip格式  解壓:unzip  檔名.zip   壓縮:zip  檔名.zip  目錄名 .tar格式  壓縮:tar  cvf  檔名.tar  檔名

LINUX安裝Python3.7Pycharm[Linux命令記錄]

有道 空白 命令格式 type 活動 user 界面 org n天前 環境   阿裏雲CenterOs7.4 64位 + Python3.7.0 + pycharm-professional-2018.3 安裝Python   1. 安裝依賴包 sudo yum -y g

Linux將檔案打包壓縮並分割成指定大小

轉自https://blog.csdn.net/loongembedded/article/details/54233175 Linux解壓檔案時遇到的問題,不知道總的資料是分了好多份,需要輸入命令統一解壓 1、普通tar壓縮命令 tar -zcvf

.Neter玩轉Linux系列之六:LinuxMySQL的安裝配置使用

基礎篇 實戰篇 一、Linux安裝MySQL (1)下載安裝包:https://dev.mysql.com/downloads/mysql/ (2)解壓並安裝 命令:tar zxvf 檔名 解壓完成之後,重名一下資料夾名字。 命令:mv 檔名1 

linux檢視核心版本gcc版本作業系統多少位等引數

1. 檢視linux版本 cat/etc/issueLinaro 12.07 \n \l 2. 檢視核心版本 1)cat/proc/versionLinux version 2.6.38-13-generic([email protected]) (gcc version 4.5.2 (Ubunt

LinuxTomcat的啟動關閉殺死程序

開啟終端cd /java/tomcat#執行bin/startup.sh #啟動tomcatbin/shutdown.sh #停止tomcattail -f logs/catalina.out #看tomcat的控制檯輸出; #看是否已經有tomcat在運行了ps -ef |

LinuxMySQL 5.55.6和5.7的RPM二進位制和原始碼安裝(

[[email protected] ~]# df -h Filesystem                                Size  Used Avail Use% Mounted on /dev/mapper/vg_rootlhr-Vol00              9.9

Linux對檔案建立修改訪問時間的一些操作

學習,stat,lstat,fstat 1 函式都是獲取檔案(普通檔案,目錄,管道,socket,字元,塊()的屬性。 函式原型 #include <sys/stat.h> int stat(const char *restrict pathname, str