Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
来源:互联网 发布:如何运行php文件 编辑:程序博客网 时间:2024/06/05 00:55
用TCP/TP进行网际互连(2)
———— 基于UDP协议的客户-服务器socket实例
1、UDP网络编程架构
2、实现代码
- 服务器:
#include <sys/types.h>#include <sys/socket.h> /*包含socket()/bind()*/#include <netinet/in.h> /*包含struct sockaddr_in*/#include <string.h> /*包含memset()*/#define PORT_SERV 8888/*服务器端口*/#define BUFF_LEN 256 /*缓冲区大小*/void static udpserv_echo(int s, struct sockaddr*client){ int n; /*接收数据长度*/ char buff[BUFF_LEN]; /*接收发送缓冲区 */ socklen_t len; /*地址长度*/ while(1) /*循环等待*/ { len = sizeof(*client); n = recvfrom(s, buff, BUFF_LEN, 0, client, &len); /*接收数据放到buff中,并获得客户端地址*/ sendto(s, buff, n, 0, client, len);/*将接收到的n个字节发送回客户 端*/ } }int main(int argc, char*argv[]){ int s; /*套接字文件描述符*/ struct sockaddr_in addr_serv,addr_clie; /*地址结构*/ s = socket(AF_INET, SOCK_DGRAM, 0); /*建立数据报套接字*/ memset(&addr_serv, 0, sizeof(addr_serv)); /*清空地址结构*/ addr_serv.sin_family = AF_INET; /*地址类型为AF_INET*/ addr_serv.sin_addr.s_addr = htonl(INADDR_ANY); /*任意本地地址*/ addr_serv.sin_port = htons(PORT_SERV); /*服务器端口*/ bind(s, (struct sockaddr*)&addr_serv, sizeof(addr_serv)); /*绑定地址*/ udpserv_echo(s, (struct sockaddr*)&addr_clie); /*回显处理程序*/ return 0; }
- 客户端
#include <sys/types.h>#include <stdio.h>#include <unistd.h>#include <sys/socket.h> /*包含socket()/bind()*/#include <netinet/in.h> /*包含struct sockaddr_in*/#include <string.h> /*包含memset()*/#define PORT_SERV 8888 /*服务器端口*/#define BUFF_LEN 256 /*缓冲区大小*/static void udpclie_echo(int s, struct sockaddr*to){ char buff[BUFF_LEN] = "UDP Login"; /*发送给服务器的测试数据05 */ struct sockaddr_in from; /*服务器地址*/ socklen_t len = sizeof(*to); /*地址长度*/ sendto(s, buff, BUFF_LEN, 0, to, len); /*发送给服务器*/ recvfrom(s, buff, BUFF_LEN, 0, (struct sockaddr*)&from, &len); /*从服务器接收数据*/ printf("recved:%s\n",buff); /*打印数据*/}int main(int argc, char*argv[]){ int s; /*套接字文件描述符*/ struct sockaddr_in addr_serv; /*地址结构*/ s = socket(AF_INET, SOCK_DGRAM, 0); /*建立数据报套接字*/ memset(&addr_serv, 0, sizeof(addr_serv)); /*清空地址结构*/ addr_serv.sin_family = AF_INET; /*地址类型为AF_INET*/ addr_serv.sin_addr.s_addr = htonl(INADDR_ANY); /*任意本地地址*/ addr_serv.sin_port = htons(PORT_SERV); /*服务器端口*/ udpclie_echo(s, (struct sockaddr*)&addr_serv); /*客户端回显程序*/ close(s); return 0; }
3、运行效果
服务器:
客户端:
附上我的实验代码,测试成功的:
https://github.com/KevinBetterQ/Network-programming/tree/master/UDP-Practice
阅读全文
0 0
- Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
- Socket网络程序设计(1) ———— 基于TCP协议的客户-服务器socket实例
- 网络编程(5)—— 基于Linux系统的UDP协议socket服务器和客户端
- 网络编程(6)—— 基于Windws系统的UDP协议socket服务器和客户端
- 基于UDP协议的Socket服务器
- 基于UDP协议之——socket编程
- 基于UDP协议的网络程序设计
- 基于socket的简单网络程序设计
- 基于UDP协议的socket
- Android基础入门教程——7.6.4 基于UDP协议的Socket通信
- socket编程——UDP协议
- Socket入门Demo——UDP协议
- java学习之路——基于UDP的Socket网络通信实例
- Socket网络程序设计(3) ———— 利用tcp完成文件传输的设计和实现
- Socket网络程序设计(4) ———— 实现linux和windows的文件传输
- Java网络编程——基于UDP的Socket编程
- socket编程(3)—— UDP协议通信
- 基于Tcp&UDP协议的简单Socket通信实例(JAVA)
- 约瑟夫环问题
- idea 破解
- Java Web基础知识之Servlet
- 1260: 找子串
- SpringBoot简介
- Socket网络程序设计(2) ———— 基于UDP协议的客户-服务器socket实例
- jQuery发送Ajax请求
- 剑指offer——栈的压入,弹出序列
- 直接插入排序
- JavaScript若干盲点总结
- 软件定义网络 SDN--openflow概述
- 【HTML】- 鼠标移动时内容进行切换
- 【BZOJ】1003 [ZJOI2006]物流运输 最短路径+DP
- CSS高级