一个简单的聊天代码:运行结果:

在这个程序之中,由于recvfrom函数拥塞函数,没有数据时会一直阻塞,所以客户端和服务器端只能通过一回一答的方式进行信息传递。严格的讲UDP没有明确的客户端和服务端,谁先进行数据传输,谁就是客户端,客户端也有可能是服务器端。

代码1:

 #include"common.h"

 int main()
{
int fd;int saddr_len;
int ret;
char buf[];
struct sockaddr_in saddr; fd = socket(AF_INET, SOCK_DGRAM, );
if(fd < )
{
printf("create socket fail!\n");
return -;
} saddr.sin_family=AF_INET;
saddr.sin_port=htons();
inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr); while()
{
printf("cli:");
gets(buf);
ret=sendto(fd,buf,,,(struct sockaddr*)&saddr,sizeof(saddr)); saddr_len=sizeof(saddr);
recvfrom(fd,buf,,,(struct sockaddr*)&saddr,&saddr_len);
printf("ser:%s\n",buf);
} close(fd); return ;
}

代码2:

#include"common.h"

int main()
{
int fd;
int ret;
int addr_len;
struct sockaddr_in saddr,caddr;
char buf[]; fd=socket(AF_INET,SOCK_DGRAM,);
if(fd<)
{
perror("socket");
}
saddr.sin_family=AF_INET;
saddr.sin_port=htons();
inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr); ret=bind(fd,(struct sockaddr*)&saddr,sizeof(saddr));
if (ret<)
{
perror("bind");
} addr_len=sizeof(caddr);
while()
{ ret=recvfrom(fd,buf,,,(struct sockaddr*)&caddr,&addr_len);
if(ret==-)
{
perror("cecvfrom");
} printf("cli:%s\n",buf);
printf("ser:");
gets(buf);
sendto(fd,buf,,,(struct sockaddr*)&caddr,sizeof(caddr)); }
close(fd);
return ;
}

网络编程——UDP编程的更多相关文章

  1. Socket网络编程-UDP编程

    Socket网络编程-UDP编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.UDP编程概述 1>.UDP服务端编程流程 创建socket对象.socket.SOCK_ ...

  2. 37 - 网络编程-UDP编程

    目录 1 UDP协议 2 UDP通信流程 3 UDP编程 3.1 构建服务端 3.3 常用方法 4 聊天室 5 UDP协议应用 1 UDP协议 UDP是面向无连接的协议,使用UDP协议时,不需要建立连 ...

  3. 五十六、linux 编程——UDP 编程模型

    56.1 UDP 编程模型 56.1.1 编程模型 UDP 协议称为用户数据报文协议,可靠性比 TCP 低,但执行效率高 56.1.2 API (1)发送数据 函数参数: sockfs:套接字文件描述 ...

  4. UNIX网络编程——UDP编程模型

    使用UDP编写的一些常见得应用程序有:DNS(域名系统),NFS(网络文件系统)和SNMP(简单网络管理协议). 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目 ...

  5. 五十五 网络编程 UDP编程

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

  6. 五十八、linux 编程——UDP 编程 广播

    58.1 广播介绍 58.1.1 介绍 广播实现一对多的通讯 它通过向广播地址发送数据报文实现的 58.1.2 套接字选项 套接字选项用于修饰套接字以及其底层通讯协议的各种行为.函数 setsocko ...

  7. 五十七、linux 编程——UDP 编程 域名解析

    57.1 介绍 57.1.1 域名解析 57.1.2 域名解析函数 gethostent 可以获取多组,gethostbyname 只可以获取一组 /etc/hosts 文件设置了域名和 IP 的绑定 ...

  8. [C# 网络编程系列]专题六:UDP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/09/01/2659167.html 引用: 前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当 ...

  9. 网络编程之UDP编程

    网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...

随机推荐

  1. C#给checkboxList设置js选中事件

    C#: for (int i = 0; i < this.CheckBoxList1.Items.Count; i++)         {             this.CheckBoxL ...

  2. idea 用tomcat运行javaWeb

    指定tomcat在计算机的安装位置: 给项目加一个启动配置: 添加一个本地tomcat: 配置这个本地tomcat: 运行方面:

  3. python验证码识别接口及识别思路代码

    1,验证码识别接口代码 import json import base64 import requests def shibie(): data = {} path = "./img/&qu ...

  4. jsp2

    jsp:实现了静态html中,插入了动态的代码 servlet:动态代码中,插入静态html (jsp代码) <%@ page language="java" content ...

  5. nodejs前端接口与状态转换调试

    和UI无关的逻辑用browser 调有时不太方便,配置 node 命令行调试环境方法如下: cnpm install @babel/core @babel/cli @babel/register @b ...

  6. python包的一些问题

    1查看python包的版本 2 卸载包的方法 3指定python包的安装版本 参考网址 https://blog.csdn.net/colourful_sky/article/details/8018 ...

  7. vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...

  8. CentOS开机提示kernel panic - not syncing: Attempted to kill init! 解决方法

    1.重新启动linux 系统,看见如图见面迅速按E键 2.看见如图界面在按E键编辑 3.如图界面使用上下键选择第二个在按E键 4.在最后一行后面添加  enforcing=0 按回车保存退出 5.在此 ...

  9. Python实现对CSV文件的读写功能

    我们要处理csv文件,首先要的导入csv模块 import csv #读取csv文件def readCsv(path): #传入变量csv文件的路径 list=[] #定义一个空列表 with ope ...

  10. 一、selenium 环境搭建

    本教程演示是在window系统上演示,linux.mac 系统以后会更新. 1.准备工作 1.python2或者python3安装包,官网:https://www.python.org/downloa ...