linux下UDP的socket编程
来源:互联网 发布:河南网络教育 编辑:程序博客网 时间:2024/06/05 15:02
自己实现了一下,主要是使用了sendto函数和recvfrom函数;
另外recvfrom和recv最主要的区别是可以得到发送端的地址。
下次接着准备实现一下ftp:
发送端:
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <netinet/in.h>#define PORT 6789#define Buflen 100#define Maxiter 20int main(){struct sockaddr_in send_addr;int sockfd, i;char content[Buflen], server_ip[Buflen];ssize_t send_size;sockfd = socket(AF_INET, SOCK_DGRAM, 0);if(sockfd < 0){printf("socket create error\n");return -1;}send_addr.sin_port = htons(PORT);send_addr.sin_family = AF_INET;send_addr.sin_addr.s_addr = htonl(INADDR_ANY);printf("please input dest ip:\n");read(0, server_ip, Buflen);send_addr.sin_addr.s_addr = inet_addr(server_ip);for(i = 0; i < Maxiter; i ++){printf("please input the send message(not more than 100bytes):\n");read(0, content, Buflen);send_size = sendto(sockfd, content, Buflen, 0, (struct sockaddr *)&send_addr, sizeof(struct sockaddr));if(send_size < 0){printf("error! %d iters\n", i);return -1;} }send_size = sendto(sockfd, "stop", 5, 0, (struct sockaddr *)&send_addr,sizeof(struct sockaddr));if(send_size < 0){printf("error!\n");return -1;}close(sockfd);return 0;}
接收端:
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <netinet/in.h>#include <stdlib.h>#define PORT 6789#define Buflen 100int main(){struct sockaddr_in send_addr, recv_addr;int sockfd, bind_err;ssize_t recv_size;char content[Buflen];sockfd = socket(AF_INET, SOCK_DGRAM, 0);if(sockfd < 0){printf("socket create error!\n");return -1;}recv_addr.sin_port = htons(PORT);recv_addr.sin_family = AF_INET;recv_addr.sin_addr.s_addr = htonl(INADDR_ANY);bind_err = bind(sockfd, (struct sockaddr *)&recv_addr, sizeof(struct sockaddr));if(bind_err < 0){printf("bind error!\n");return;}while(1){memset(&send_addr, 0, sizeof(send_addr));socklen_t buflen = sizeof(struct sockaddr);recv_size = recvfrom(sockfd, content, Buflen, 0, (struct sockaddr *)&send_addr, &buflen);if(recv_size < 0){printf("recvfrom error!\n");return -1;}if(strncmp(content, "stop", 4) == 0) break;printf("recv : %s\n", content);}close(sockfd);return 0;}
0 0
- linux下UDP的socket编程
- linux下socket编程(udp)
- 网络编程UDP的socket编程实现(linux下)
- C语言Linux下的Socket 编程(UDP)
- Linux下Socket编程之UDP原理
- Linux下Socket编程之UDP应用
- Linux下Socket编程之UDP应用
- Linux下socket编程之UDP
- Linux socket编程:udp
- 网络编程--UDP下的Socket
- TCP/UDP下的socket编程
- 基于linux 的socket UDP编程例程
- Linux下的UDP编程
- Linux下的UDP编程
- Linux 下socket 的UDP例子
- Linux下的UDP Socket简单例子
- Linux下的UDP Socket简单例子
- Linux下的socket编程实践(十) 基本UDP编程细节
- scala中 toString和apply的区别
- <Android 应用 之路> 百度地图API使用(3)
- LeetCode(350)Intersection of Two Arrays II
- Keil MDK 下利用 printf( )的串口编程
- HTML布局
- linux下UDP的socket编程
- 详解iframe
- 设计模式(3) 工厂方法模式
- 39. Combination Sum-回溯法
- Android Picasso图片缓存框架的使用
- 关于handler的那些事
- 【开发】【开源】SmartEditorForOI
- Http协议及TCP/IP协议详解
- pxhawk软件分析之伺服控制