1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux数据报文接收发送总结1

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

时间:2023-05-03 23:47:37

相关推荐

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网络系统内部是如何处理的,以及各个部分之间如何交互。限作者水平,如有错误,请不吝指出。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。