日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言网络编程:send函数详解

發布時間:2023/12/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言网络编程:send函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數描述
  • #include <sys/socket.h>
  • ssize_t send(int sockfd, const void *buf, size_t len, int flags);
  • 函數功能:向對方發送數據
    其實也可以使用sendto函數:
    ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);,如果sendto后面的兩個參數為NULL和0時與send函數的作用是等價得。
    sendto函數一般用作UDP通信
  • 返回值:
    成功:返回發送的字節數
    失敗:返回-1 且errno被設置
  • 函數參數
    a. sockfd 用于通信的文件描述符
    服務器:sockfd為accept返回的通信描述符
    b. buf 應用緩存,用于存放要發送到數據
    可以是任何類型:結構體,int , char,float,字符串
    c. len buf的大小
    d. flags 一般設置為0,此時send為阻塞式發送
    即發送不成功會一直阻塞,直到被某個信號終端終止,或者直到發送成功為止。
    指定MSG_NOSIGNAL,表示當連接被關閉時不會產生SIGPIPE信號
    指定MSG_DONTWAIT 表示非阻塞發送
代碼實例
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/socket.h> #include <sys/types.h> #include <errno.h>typedef struct data {char name[30];unsigned int num; }Data; void print_err(char *str, int line, int err_no) {printf("%d, %s :%s\n",line,str,strerror(err_no));_exit(-1); }int main() {int skfd = -1, ret = -1;skfd = socket(AF_INET, SOCK_STREAM, 0);if ( -1 == skfd) {print_err("socket failed",__LINE__,errno);}struct sockaddr_in addr;addr.sin_family = AF_INET; //設置tcp協議族addr.sin_port = 6789; //設置端口號addr.sin_addr.s_addr = inet_addr("192.168.102.169"); //設置ip地址ret = bind(skfd, (struct sockaddr*)&addr, sizeof(addr));if ( -1 == ret) {print_err("bind failed",__LINE__,errno);}/*將套接字文件描述符從主動轉為被動文件描述符,然后用于被動監聽客戶端的連接*/ret = listen(skfd, 3);if ( -1 == ret ) {print_err("listen failed", __LINE__, errno);}/*被動監聽客戶端發起的tcp連接請求,三次握手后連接建立成功*/int cfd = -1;struct sockaddr_in caddr = {0};//為應用層獲取客戶端的IP和端口號int csize = 0;cfd = accept(skfd, (struct sockaddr*)&caddr, &csize);if (-1 == cfd) {print_err("accept failed", __LINE__, errno);}printf("cport = %d, caddr = %s\n", ntohs(caddr.sin_port),inet_ntoa(caddr.sin_addr));//發送數據結構體定義Data std_data = {0};while (1) {printf("stu name:\n");scanf("%s",std_data.name);//對于int型的需要將主機端序轉換為網絡端序,這里轉成long型。printf("stu num:\n");scanf("%d",&std_data.num);std_data.num = htonl(std_data.num);//將數據std_data強制類型轉換后發送ret = send(cfd, (void *)&std_data,sizeof(std_data),0);if ( -1 == ret) {print_err("accept failed", __LINE__, errno);} }return 0; }

總結

以上是生活随笔為你收集整理的C语言网络编程:send函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文字幕在线观看视频 | 国产精品4区 | 中文字幕五区 | 国产精品ⅴa有声小说 | 污色视频 | 91超碰在线播放 | 亚洲一区在线免费观看 | 手机在线看黄色 | 动漫裸体无遮挡 | 婷婷六月激情 | 天堂中文字幕在线 | 你懂得在线 | 国产精品亚洲自拍 | 在线观看av黄色 | 国产亚洲精品久久久 | 免费黄色国产 | 国产精品午夜福利视频234区 | 99re99| 丰满岳妇伦在线播放 | 亚洲美女视频在线观看 | 91一级片| 午夜视频在线免费播放 | 午夜寂寞影院在线观看 | 新版红楼梦在线高清免费观看 | 精品视频久久 | 一区二区三区在线观看免费 | 99精彩视频 | 成年人视频免费 | 国产精品第72页 | 美女福利视频网 | 国产电影免费观看高清完整版视频 | 97caocao| 午夜影院免费 | 五月婷婷丁香六月 | 欧美精品性生活 | 伊人激情网 | 不卡中文 | 手机看片国产1024 | 欧美不卡三区 | 超薄肉色丝袜一二三 | 欧美v视频 | 久本草精品 | 亚洲免费色 | 成人日皮视频 | 免费的av网站 | 久久久久久久久久久99 | 视频二区三区 | 国产人伦精品一区二区三区 | 欧美久久久久久久久久久久久久 | 蜜桃一区二区三区 | 日韩乱码一区二区三区 | 人人人超碰 | 凹凸视频一区二区 | 国产精品性爱在线 | 极品销魂美女一区二区三区 | 国产精品99久久久久 | 亚洲丁香 | 欧美性猛交xxxx偷拍洗澡 | 88国产精品视频一区二区三区 | 国产夫妻视频 | 精品无码久久久久国产 | 亚洲自拍在线观看 | 天天天天天干 | 男人的天堂影院 | 欧洲成人一区二区三区 | 国产男同gay网站 | 日本理论片午伦夜理片在线观看 | 中文天堂av | 亚洲乱乱 | 日日舔夜夜摸 | 一眉道姑 | jizz在亚洲| 原创少妇半推半就88av | 久久亚洲精品视频 | 麻豆传媒一区二区三区 | 免费婷婷 | 国产男女av | 精品一区二区三区视频在线观看 | 精品久久久久久久久久久久 | 日本中文字幕在线播放 | 青青草超碰在线 | 日本久久综合 | 国产jizz| 欧美少妇18p | 国产一区二区免费 | 国产视频一区二区在线播放 | 欧美亚洲国产视频 | 亚洲永久精品一区 | 国产精品久久伊人 | 国产在线观看 | 中文字幕一区二区三区在线播放 | 亚洲国产视频在线观看 | 99热在线观看精品 | 亚洲三级a| 久久一级电影 | 国产精品九九九 | 国产午夜精品理论片 | 4438全国最大成人网 | 法国空姐 在线 |