基于UDP的编程
前提:基于Linux系统的学习
服务器端编程模型
1 socket(2) 创建通讯端点,返回一个文件描述符fd
2 bind(2) 将fd绑定到本地的地址和端口
while(1){
阻塞等待客户端请求数据的到来 recvfrom(2)
业务处理
将处理结果发送给客户端sendto(2)
}
#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h> int main(){
char IP[];
char buf[];
struct sockaddr_in serv;
struct sockaddr_in clie;
socklen_t clie_len;
//创建socket通讯端口,fd
int fd=socket(AF_INET,SOCK_DGRAM,);
if(fd==-){
perror("socket");
return -;
}
//初始化serv的成员
serv.sin_family=AF_INET;
serv.sin_port=htons();
serv.sin_addr.s_addr=htonl(INADDR_ANY);
//将fd绑定到服务器
int b=bind(fd,(struct sockaddr*)&serv,sizeof(serv));
if(b==-){
perror("bind");
return -;
}
while(){
clie_len=sizeof(clie);
//阻塞等待客户端的请求
ssize_t s=recvfrom(fd,&buf,,,(struct sockaddr*)&clie,&clie_len);
if(s==-){
perror("recvfrom");
return -;
} printf("%s\n", inet_ntop(AF_INET,&clie.sin_addr,IP,));
write(,buf,s);
strcpy(buf,"gunk you\n");
//将处理结果发送给客户端
sendto(fd,buf,strlen(buf),,(struct sockaddr*)&clie,sizeof(clie));
}
close(fd);
}
客户端编程模型
1 创建通讯端点,返回一个文件描述符fd
2 使用fd向服务器发送消息
3 阻塞等待服务器的响应消息
4 将得到的消息处理
5 关闭fd.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>
int main(){
char buf[];
struct sockaddr_in serv;
char* msg="hector client\n";
//创建通讯端口,fd
int fd=socket(AF_INET,SOCK_DGRAM,);
if(fd==-){
perror("socket");
return -;
}
//初始化serv的成员
serv.sin_family=AF_INET;
serv.sin_port=htons();
inet_pton(AF_INET,"127.0.0.1",&serv.sin_addr);
//使用fd向服务器发送消息
sendto(fd,msg,strlen(msg),,\
(struct sockaddr*)&serv,sizeof(serv));
//阻塞等待服务器的响应
ssize_t r=recvfrom(fd,buf,,,NULL,NULL);
if(r==-){
perror("recvfrom");
return -;
}
//将得到的消息处理
write(,buf,r);
//关闭fd
close(fd); return ;
}
基于UDP的编程的更多相关文章
- 基于UDP协议编程
基于udp套接字 udp是无链接的,先启动哪一端都不会报错. UDP(user datagram protocol,用户数据报协议)是无连接的,面向消息的,提供高效率服务.不会使用块的合并优化算法,, ...
- Java网络编程二--基于UDP的编程
DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(Dategra ...
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- Linux网络编程:基于UDP的程序开发回顾篇
基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了 ...
- (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制
1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...
- 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现
一.客户端/服务器架构(C/S架构) 即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...
- 网络编程(基于udp协议的套接字/socketserver模块/进程简介)
一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...
- 20181225 基于TCP/IP和基于UDP/IP的套接字编程
一.TCP/IP的套接字编程 服务器端代码: import socketserver = socket.socket() # 默认是基于TCP# 基于TCP的对象serve=socket.sock ...
- TCP/IP网络编程之基于UDP的服务端/客户端
理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...
随机推荐
- 基因表达半衰期 | mRNA Half-Life
做单细胞RNA-seq分析,自然就能想到我们测到的其实是一个概率学的东西,就像女士品茶里的酵母的泊松分布一样. 真实的细胞里,一切都是连续的,从DNA到mRNA到蛋白,是有一个时间间隔的,每一个pro ...
- GROUP_CONCAT 将mysql多条数据合并为一条
实现将多条数据合并为一条数据,在mysql中可以通过 GROUP_CONCAT 函数实现 上面是潇leader发我的和工作不相关的小小小需求描述,很明显是要把id和name相同的数据合并为一条,下面按 ...
- JS 数组对象的某一项抽离出来放在外面
数组类型: shamDeviceData: [ { "projectKey":"5555", "productKey":"5555 ...
- MiniDLNA常用操作
# MiniDLNA常用操作 ## 简介 多媒体共享服务器,类似于FTP,支持DLNA的客户端都可以看视频,听音乐,处于同一局域网就可以了 ## 管理 - 启动`systemctl start min ...
- F5健康检查导致的服务端连接异常RST
1. TCP健康检查 比如阿里云,F5负载设备当前都有这种机制. 该实现机制可能会导致后端ECS认为相关TCP连接出现异常(非正常退出),并在业务软件如Java连接池等日志中抛出相应的错误信息,如Co ...
- Flutter -------- BottomNavigationBar 界面切换
Android 中有BottomNavigationBar+Fragment切换 而在Flutter也有的BottomNavigationBar 效果图 底部有两种情况 底部导航栏的类型更改其项目的显 ...
- 微信jaapi签名
public WeiXinJsSignature(string weixinUrl) { //string url = ConfigurationManager.AppSettings["U ...
- 【转载】 卷积神经网络(Convolutional Neural Network,CNN)
作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...
- VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
摘自:http://www.360doc.com/content/15/0405/09/10098873_460727712.shtml 用过 VMware Workstation 的人,不知道有没有 ...
- PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***
1066 Root of AVL Tree (25 分) An AVL tree is a self-balancing binary search tree. In an AVL tree, t ...