Linux数据报文接收发送总结1
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: proc文件的简单读写
- 下一篇: 0.项目运行环境和项目经理