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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux数据报文接收发送总结1

發布時間:2025/4/5 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux数据报文接收发送总结1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.?引

如下簡單的一段在代碼,我們在Linux上運行;同時再運行一服務端的回顯;

#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h>int main(void) {int sk = 0;struct sockaddr_in ser;char buf[1024] = {0};int addr_len = 0;int ret = 0;sk = socket(AF_INET, SOCK_DGRAM, 0);if(0 > sk){printf("socket error.\n");return -1;}sprintf(buf, "Hello ! %u", time(NULL));memset(&ser, 0x0, sizeof(ser));ser.sin_family = AF_INET;ser.sin_port = htons(2323);ser.sin_addr.s_addr = inet_addr("192.168.185.1");ret = sendto(sk, buf, sizeof(buf), 0 , (struct sockaddr *)&ser, sizeof(ser));if(0 > ret){printf("Sendto error.\n");close(sk);return -1;}printf("-> %s\n", buf);memset(&ser, 0x0, sizeof(ser));memset(buf, 0x0, sizeof(buf));addr_len = sizeof(ser);ret = recvfrom(sk, buf, sizeof(buf), 0 , (struct sockaddr *)&ser, &addr_len);if(0 > ret){printf("recvfrom error.\n");close(sk);return -1;}printf("Recv %s:%d\n", inet_ntoa(ser.sin_addr), ntohs(ser.sin_port));printf("<- %s\n", buf);close(sk);return 0; }

運行結果如下:

[root@localhost test]# ./a.out -> Hello ! 1605946250Recv 192.168.185.1:2323 <- Hello ! 1605946250[root@localhost test]#

?

在這個過程中,Linux系統是如何創建socket的,以及數據報文是如何從網卡上發送和接收,并再返回給應用程序的,本次就開始我們的探險之旅。

通過本文,意在貫穿Linux網絡系統內部是如何處理的,以及各個部分之間如何交互。限作者水平,如有錯誤,請不吝指出。

?

總結

以上是生活随笔為你收集整理的Linux数据报文接收发送总结1的全部內容,希望文章能夠幫你解決所遇到的問題。

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