linux UDP网络编程
来源:互联网 发布:数据库测试方法 编辑:程序博客网 时间:2024/06/05 07:49
UDP 提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据,而不必在传送数据之前建立对话。它主要用于那些非连接型的应用程序,如:视频点播
UDP流程图:
服务器代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>
#define PORTNUM 3333
int main()
{
int sock_fd;
struct sockaddr_in my_addr;
struct sockaddr_in fromaddr;
int addrlen = sizeof(struct sockaddr);
struct sockaddr_in addr_client;
char buf[1024];
//1.socket
sock_fd = socket(AF_INET,SOCK_DGRAM,0);
if(sock_fd < 0)
{
printf("socket error\n");
exit(1);
}
//2.bind
bzero(&my_addr,sizeof(struct sockaddr_in));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORTNUM);
my_addr.sin_addr.s_addr = INADDR_ANY;
//my_addr.sin_addr.s_addr = inet_addr("192.168.1.11");
if(bind(sock_fd,(struct sockaddr *)(&my_addr),addrlen) < 0)
{
printf("bind error\n");
close(sock_fd);
exit(1);
}
while(1)
{
bzero(buf,sizeof(buf));
bzero(&fromaddr,sizeof(fromaddr));
//3.recv
if(recvfrom(sock_fd,buf,1024,0,(struct sockaddr *)(&fromaddr),&addrlen) > 0)
{
printf("buf = %s\n",buf);
}
if(sendto(sock_fd,"ok",1024,0,(struct sockaddr *)(&fromaddr),sizeof(struct sockaddr)) < 0)
{
printf("send error\n");
}
if(strncmp(buf,"quit",4) == 0)
{
break;
}
}
//4.close
close(sock_fd);
return 0;
}
客户端:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>
#define PORTNUM 3333
int main()
{
int sock_fd;
struct sockaddr_in toaddr;
struct sockaddr_in fromaddr;
char buf[1024];
int addrlen = sizeof(struct sockaddr);
//1.socket
sock_fd = socket(AF_INET,SOCK_DGRAM,0);
if(sock_fd < 0)
{
printf("socket error\n");
exit(1);
}
//2.send
bzero(&toaddr,sizeof(toaddr));
toaddr.sin_family = AF_INET;
toaddr.sin_port = htons(PORTNUM);
toaddr.sin_addr.s_addr = inet_addr("192.168.1.11");
printf("please input buf:");
scanf("%s",buf);
if(sendto(sock_fd,(void *)buf,1024,0,(struct sockaddr *)(&toaddr),sizeof(struct sockaddr)) < 0)
{
printf("send error\n");
}
bzero(&fromaddr,sizeof(fromaddr));
if(recvfrom(sock_fd,buf,1024,0,(struct sockaddr *)(&fromaddr),&addrlen) > 0)
{
printf("buf = %s\n",buf);
}
//3.close
close(sock_fd);
return 0;
}
- LINUX UDP网络编程
- Linux网络编程-UDP
- Linux UDP网络编程
- linux UDP网络编程
- Linux网络编程-UDP
- Linux网络编程-UDP
- 【Linux网络编程】UDP编程
- Linux网络编程 - UDP网络编程应用
- linux 网络编程 udp篇
- linux之UDP网络编程
- Linux 网络编程之UDP
- Linux网络编程之UDP
- linux网络编程--UDP协议
- linux网络编程之UDP
- linux网络编程之UDP
- Linux网络编程之UDP
- Linux 网络编程——UDP编程
- Linux 网络编程——UDP编程
- 斐波那契数列-递归初步
- 洛谷 P1202 [USACO1.1]黑色星期五Friday the Thirteenth
- 使用 Docker 搭建 Java Web 运行环境
- 自定义View实现手机qq5.X的抽屉特效和聊天界面联系人左滑功能
- 20161106学习心得
- linux UDP网络编程
- 1057. 数零壹(20)
- Spring各jar包的作用(转载)
- 122. Best Time to Buy and Sell Stock II 类别:贪心算法 难度:medium
- Form表单验证之使用session做交互
- Spring Boot 2.0.0参考手册_中文版_Part III_14-18
- 响应式侧边导航栏(刚入门的菜鸟,勿喷...)
- Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects
- C#之文件选择器和文件保存器