前提:基于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的编程的更多相关文章

  1. 基于UDP协议编程

    基于udp套接字 udp是无链接的,先启动哪一端都不会报错. UDP(user datagram protocol,用户数据报协议)是无连接的,面向消息的,提供高效率服务.不会使用块的合并优化算法,, ...

  2. Java网络编程二--基于UDP的编程

    DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(Dategra ...

  3. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  4. Linux网络编程:基于UDP的程序开发回顾篇

    基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下:   对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了 ...

  5. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

  6. 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现

    一.客户端/服务器架构(C/S架构)                                                即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...

  7. 网络编程(基于udp协议的套接字/socketserver模块/进程简介)

    一.基于UDP协议的套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就 ...

  8. 20181225 基于TCP/IP和基于UDP/IP的套接字编程

    一.TCP/IP的套接字编程 服务器端代码: import  socket​server = socket.socket() # 默认是基于TCP# 基于TCP的对象serve=socket.sock ...

  9. TCP/IP网络编程之基于UDP的服务端/客户端

    理解UDP 在之前学习TCP的过程中,我们还了解了TCP/IP协议栈.在四层TCP/IP模型中,传输层分为TCP和UDP这两种.数据交换过程可以分为通过TCP套接字完成的TCP方式和通过UDP套接字完 ...

随机推荐

  1. python中字符截取[-1]、[:-1]、[::-1]、[n::-1]等使用方法的详细讲解(建议留存)

    python涉及字符截取的详细功能讲解: str = ' print("str[0:3]:"+str[0:3]) # 正向截取字符串 0~3(不包含3) 即 012 print(& ...

  2. pyinstaller参数介绍以及总结

    最近利用tkinter+python+pyinstaller实现了小工具的项目,在此记录下pyinstaller相关参数以及爬过的坑. 一.pyinstaller相关参数 -F, –onefile 打 ...

  3. Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liuchonge/article/deta ...

  4. nginx只允许域名访问,禁止ip访问 禁止其他域名访问

    背景:为什么要禁止ip访问页面呢?这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生. 解决方法:这里介绍修改配置文 ...

  5. ch341a编程器写操作超时失败

    当点击自动编写‘提示写操作超时失败’要怎么样才能解决,下面我给大家分享一下!   方法/步骤     首先我们点击操作   选择操作选项   看看箭头所指的几个地方是不是都没打上勾   我们把这几个地 ...

  6. GWAS这十年 | 10 Years of GWAS Discovery: Biology, Function, and Translation

    相关文章: A Unified Framework for Association Analysis with Multiple Related Phenotypes 太重要了,不得不单独拿出来分析一 ...

  7. RabbitMQ教程C#版 - 工作队列

    先决条件本教程假定 RabbitMQ 已经安装,并运行在localhost标准端口(5672).如果你使用不同的主机.端口或证书,则需要调整连接设置. 从哪里获得帮助如果您在阅读本教程时遇到困难,可以 ...

  8. 011 client系列案例

    一:Client系列 1.说明 clientWidth:不包括边框的可视区的宽 clientHeight:可视区的高,不包括边框 clientLeft:左边框的宽度 clientTop:上面框的宽度 ...

  9. FrameLayout--霓虹灯

    主函数里面,新建一个线程,控制改变背景色 package com.example.framelayout import android.support.v7.app.AppCompatActivity ...

  10. [原][OE][官方例子]osgearth_annotation OE地球添加热点标签

    OE所有官方例子 OE代码样例 /* -*-c++-*- */ /* osgEarth - Dynamic map generation toolkit for OpenSceneGraph * Co ...