Linux内核协议栈(2) 由简单的socket编程例子开始
来源:互联网 发布:网络直播股票 编辑:程序博客网 时间:2024/05/01 05:58
一个网络编程例子(UDP,因为简单):
server:
#include <sys/socket.h>#include <string.h>#include <netinet/in.h>#include <stdio.h>int main(){ int fd; char buff[1024]={0}; int len; struct sockaddr_in addr; fd = socket(AF_INET,SOCK_DGRAM,0); if(fd<0) { printf("Failed to create socket!!!\n "); return -1; } memset(&addr,0,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_port=htons(8086); addr.sin_addr.s_addr= htonl(INADDR_ANY); bind(fd,(struct sockaddr*)&addr,sizeof(addr)); while(1) { recvfrom(fd,buff,sizeof(buff),0,(struct sockaddr*)&addr,&len); printf("%s\n",buff); memset(buff,0,sizeof(buff)); } return 0;}
client:
#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>int main(){ int fd; char buff[1024]; int len; struct sockaddr_in addr; fd = socket(AF_INET,SOCK_DGRAM,0); if(fd<0) { printf("Failed to create socket!!!\n "); return -1; } memset(&addr,0,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_port=htons(8086); addr.sin_addr.s_addr= inet_addr("127.0.0.1"); sendto(fd,"Hello",sizeof("Hello"),0,(struct sockaddr*)&addr,sizeof(addr)); return 0;}
非常简单的一个网络通信的例子。看出我们要进行网络通信,简单地调用几个socket API函数就可以实现。
在服务端:socket-->bind-->recvfrom
在客户端:socket-->sendto
无论哪本书,哪个资料,一旦说到要如何进行网络编程,给我们的信息精简之后大抵如此,总结为一句话就是——其他的不用管,就这样做就可以了。
但今天我们想知道,这样做到底发生了什么,协议栈到底帮了我们做了什么,才使我们这边方便就可以进行网络编程。为此我首先有个疑问:socket调用到底干了什么?我们将在下节刨根问底。
...待续
0 0
- Linux内核协议栈(2) 由简单的socket编程例子开始
- Linux socket 编程简单例子
- linux socket编程 多协议服务器例子
- linux socket编程以及简单的tcp,udp的例子
- Linux下Socket编程简单例子
- linux socket编程简单例子//代码
- Linux内核协议栈(附2)内核如何通过file对象找到对应的socket对象?
- Linux内核协议栈的socket查找缓存路由机制
- Linux内核协议栈的socket查找缓存路由机制
- 一个Socket网络编程的简单例子
- 一个简单的java socket编程例子
- 非常简单的socket编程例子
- Linux内核网络协议栈4-创建socket(2)
- Linux内核协议栈(3) socket调用分析
- linux socket的IO多路复用简单例子(一)
- linux socket的IO多路复用简单例子(二)
- linux socket的IO多路复用简单例子(三)
- linux socket的IO多路复用简单例子(四)
- 数据结构之链表
- HTML第三章作业
- 数据结构之二叉树牛客网篇
- 解析nginx负载均衡
- sublime text 3配置c/c++编译环境
- Linux内核协议栈(2) 由简单的socket编程例子开始
- 第四周项目4.1
- mysql慢查询
- [思路题 乱搞] BZOJ 4377 [POI2015]Kurs szybkiego czytania
- 蓝桥杯参赛感悟
- 整数拆分并且乘积最大问题
- 进程的概念
- mysql联合索引
- 蓝桥杯感悟+3天笔记