Linux UDP Server and Client Sample.Linux 下 UDP 服务和客户端程序示例

广播UDP测试sample代码 附件包含C语言实现的UDP广播sample代码 broadcast_receive.c broadcast_send.c。 供学习参考 立即下载

linux下UDP 客户端和服务端程序示例,使用recvfrom与sendto函数

程序转自hoyt的<Linux网络编程>,解决了作者的client端收不到数据的情况,但因为联系不到作者,只好在此贴出,如果有哪位朋友可以代我通知作者的或告诉我作者联系方式的话,本人不胜感激.

原程序错误原因:server端使用recvfrom()前为将用来标识记录地址的sockadd_in addr的addrlen为初始化,导致server端解析地址错误.

解决方法:将addrlen初始化为sizeof(addr) 

 
/**********UDP服务端程序UDPserver.c***********/
#include 
<sys/types.h>
#include 
<sys/socket.h>
#include 
<netinet/in.h>
#include 
<arpa/inet.h>
#include 
<unistd.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<errno.h>
#include 
<string.h>

#define SERVER_PORT 8888
#define MAX_MSG_SIZE 1024

void udps_respon(int sockfd) {
    
struct sockaddr_in addr;
    unsigned 
int addrlen;
    
int n;
    
char msg[MAX_MSG_SIZE];

    
while(1) {
    
// 从网络上读,写到网络上去
        
// 初始化addr长度!
        addrlen = sizeof(addr);
        
if((n = recvfrom(sockfd,msg,MAX_MSG_SIZE,0,
            (
struct sockaddr *)&addr,&addrlen)) < 0) {
            fprintf(stderr,
"Recveive packahe error:%s",
                strerror(errno));
            
continue;
        }

        msg[n 
- 1] = '';
        
// 显示服务器端已经收到了信息
        fprintf(stdout,"I have received %s from %sn",msg,
            inet_ntoa(addr.sin_addr));
        sendto(sockfd,msg,n,
0,(struct sockaddr *)&addr,addrlen);
    }

}


int main(void) {
    
int sockfd;
    
struct sockaddr_in addr;
    sockfd 
= socket(AF_INET,SOCK_DGRAM,0);
    
if(sockfd < 0) {
        fprintf(stderr,
"Socket Error:%sn",strerror(errno));
        exit(
1);
    }


    bzero(
&addr,sizeof(struct sockaddr_in));
    addr.sin_family 
= AF_INET;
    addr.sin_addr.s_addr 
= htonl(INADDR_ANY);
    addr.sin_port 
= htons(SERVER_PORT);

    
if(bind(sockfd,(struct sockaddr *)&addr,
        
sizeof(struct sockaddr_in)) < 0) {
        fprintf(stderr,
"Bind Error:%sn",strerror(errno));
        exit(
1);
    }


    udps_respon(sockfd);
    close(sockfd);
    exit(
1);
}


/*****UDP客户端程序UDPclient.c********/
#include 
<sys/types.h>
#include 
<sys/socket.h>
#include 
<netinet/in.h>
#include 
<arpa/inet.h>
#include 
<errno.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<unistd.h>

#define MAX_BUF_SIZE 1024

void udpc_request(int sockfd,const struct sockaddr_in *addr,int len) {
    
char buffer[MAX_BUF_SIZE];
    
int n;

    
while(1) {
    
// 从键盘读入,写到服务端
        fgets(buffer,MAX_BUF_SIZE,stdin);
        sendto(sockfd,buffer,strlen(buffer),
0,(struct sockaddr *)addr,len);
        bzero(buffer,MAX_BUF_SIZE);
        
// 从网络上读,写到屏幕上
        n = recvfrom(sockfd,buffer,MAX_BUF_SIZE,0,NULL,NULL);
        buffer[n 
- 1] = '';
        fprintf(stdout,
"I received %s from server.n",buffer);
    }

}


int main(int argc,char **argv) {
    
int sockfd,port;
    
struct sockaddr_in addr;

    
if(argc != 3)  {
        fprintf(stderr,
"Usage:%s server_ip server_portn",argv[0]);
        exit(
1);
    }

    
if((port = atoi(argv[2])) < 0) {
        fprintf(stderr,
"Usage:%s server_ip server_portn",argv[0]);
        exit(
1);
    }

    
    sockfd 
= socket(AF_INET,SOCK_DGRAM,0);
    
if(sockfd < 0) {
        fprintf(stderr,
"Socket Error:%sn",strerror(errno));
        exit(
1);
    }

    
// 填充服务端的资料
    bzero(&addr,sizeof(struct sockaddr_in));
    addr.sin_family 
= AF_INET;
    addr.sin_port 
= htons(port);
    
if(inet_aton(argv[1],&addr.sin_addr) < 0) {
        fprintf(stderr,
"IP error:%sn",strerror(errno));
        exit(
1);
    }

    udpc_request(sockfd,
&addr,sizeof(struct sockaddr_in));
    close(sockfd);
    exit(
0);
}
udp简单sample(client) udp简单sample程序,这是client程序。 立即下载

相关推荐

UDPSample:样本UDP客户端-服务器程序

UDP样本 样本UDP客户端-服务器程序

UDP Sample(CS)

下面两段代码,附带其执行档.   //  //Server.c  //   #include       #include       #include       #include       #pragma   comment(lib,"ws2_32")      int main(int argc, char* argv[]){  WSADATA   wsda;

dafan的专栏 1064

linux Ubuntu系统网络调试助手.rar

1、基于linux ubuntu 系统的网络调试助手 可以进行UDP通讯,可做TCP客户端,TCP服务器。十六进制和ASCII 传送接收数据; 2、内附安装说明

Linux实现简单的udp服务端和客户端(C/C++)

Linux实现简单的udp服务端和客户端(C/C++)

Tracytang97的博客 1774

如何在TRAE(国际版)中搭建ESP-IDF环境以及怎么使用ESP-IDF插件编译烧录到ESP32s3中

点击进入,再点击ESPRESSIF中的EXPRESS,这里会下载ESP-IDF所需要的全部工具和包等等。首先我们从终端中进入项目所在的目录中,我的项目在E盘下的jikecode\esp32s3-client中,我就进入这个目录下。,因为我的项目是针对ESP32-S3进行开发的,所以这里的芯片型号是esp32s3,大家根据各自芯片的型号来输入。执行了这个命令后,ESP-IDF会自动配置与ESP-S3相关的编译选项,生成对应芯片的配置文件。进入第一个ESP-IDF插件,进行安装,注意安装的是。

一个爱折腾技术的普通人,分享踩过的坑、学到的干货。 1504

Ubuntu桌面消失?可能是lightdm配置在捣鬼:详细解析/etc/lightdm.conf的优先级机制与实战修复

本文详细解析了Ubuntu系统因lightdm显示管理器配置错误导致桌面消失的问题。通过分析/etc/lightdm.conf的优先级加载机制,提供了从systemctl诊断、调试模式运行到实战修复配置语法错误(如缺失[Seat:*]组)的完整方案。文章还探讨了在系统无法启动时使用chroot或恢复模式进行高级救援,并对比了lightdm与gdm3在NVIDIA驱动环境下的不同表现,帮助用户高效恢复图形界面。

weixin_29313547的博客 420

Linux TCP/UDP调试助手下载安装(转载备忘)

Linux TCP/UDP调试助手下载安装(转载备忘) 本文主要转载 https://blog.csdn.net/have_fun_/article/details/88229426.作为备忘文档使用。 因为本人要简单调试一下TCP/UDP,需要一个简单的调试助手,wireshark和tcpdump太庞大,自己又懒得写,所以在网上找了一个,写此博文仅用于个人备忘。 软件名称:网络调试助手 安装包名称:mNetAssist-release-amd64.deb 截图: 安装环境:UBuntu18.04 安装步

平安格勒_星的博客 6376

终端效率神器:Tmux 安装与使用全指南

终端效率神器:Tmux 安装与使用全指南

身在被窝_心在编程 1360

【linux网络编程】基于UDP的server-client简单实现

1 server端思路 (1)lfd = socket(AF_INET, STREAM, 0); SOCK_DGRAM --- 报式协议。 (2)bind(); (3)listen(); --- 可有可无 while(1){ (4)read(cfd, buf, sizeof) --- 被替换 --- recvfrom() --- 涵盖accept传出地址结构。小-- 大 write();--- 被替换 --- send

StudyWinter的博客 693

SAP采购申请详述;以及采购计划协议/交货计划行

SAP采购申请详述;以及采购计划协议/交货计划行

saplakes的博客 4341

CloudCompare如何进行二次开发?

CloudCompare源代码编译成功后,即可进行二次开发,可以通过修改源码或者制作插件实现二次开发。本文二次开发采用修改CloudCompare的源代码的方式,分别修改mainwindow.ui、mainwindow.h、mainwindow.cpp,实现扩展功能,克隆选中的点云。

【cacrle】的博客 5332

编写Linux下的UDP Client/Server程序

一、引言UDP是TCP/IP协议中的传输层协议的一种,本文介绍了在Linux下编写基于UDP协议的Client/Server模型的程序的方法,并给出了一个echo Client/Server例子程序。二、UDP协议简介UDP是一种简单的传输层协议,在RFC768中有详细描述。UDP协议是一种非连接的、不可靠的数据报文协议,完全不同于提供面向连接的、可靠的字节流的TCP协议。虽然UDP有很多不足,但

sdzxx2008的专栏 514

stm32h743的hrtim使用生成pwm波

HRTIM(High-Resolution Timer)是一种高精度定时器,其时钟频率可直接与CPU主频同步,达到480MHz。相比之下,其他传统定时器需挂载在APB总线上,受总线频率限制,最高仅支持240MHz。这种直接时钟同步机制显著提升了定时器的分辨率和精度。

d13211322的博客 1614

Linux下UDP Socket编程实例

server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <arpa/inet.h> #include <netinet/in.h> int main(int argc, ch...

托卡马克 1374

RT-DETR-R18 上下文信息融合:引入全局特征提升遮挡目标检测

"""轻量化全局特征提取器(2层Transformer编码器)"""# 特征投影层(将多尺度特征统一维度)# 轻量化Transformer编码器(分组卷积优化)# 全局特征池化(输出 [bs, hidden_dim])# local_features: 多尺度特征列表 [C3, C4, C5],各 [bs, c, h, w]# 统一投影至 hidden_dim 并展平为序列# Transformer编码全局上下文# 全局池化得到全局向量。

走向CTO的路上... 496

HFSS仿真PCB射频通路间的隔离度

本文介绍HFSS方式仿真带有器件的射频通路间的隔离度,可视为CST方式的补充,二者的结果相互参照。在前期靠仿真确认风险点时,可以作为一种较为直观和可信的手段。

sinat_15150363的博客 1527

[C语言] Socket编程简单例子/Client+Server

一、原理 1.基于TCP协议的服务器端程序流程: 1)创建套接字(socket) 2)绑定套接字(bind) 3)将套接字设为监听,准备接收客户请求(listen) 4)等待客户请求的到来,当请求到来后,接受请求,返回一个对应于此次连接的套接字(accept) 5)用返回的套接字与客户端进行通信(send/recv) 6)返回,等待另一客户请求 7)关闭套接字 2.基于TCP

wabil的专栏 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux系统编程-SOCKET通信基础编程(2)-UDP编程客户端程序

UDP编程客户端程序 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <string.h> #include <errno.h> #include <netinet/in.h> #include <unistd.h> #include <fcntl.h> #

SSSS的博客 351

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux--UDP编程-linux-server-windows-client

UDP信息传输Linux服务器/************linux-udp-image-server*****************/ /** * 这是一个linux 服务器端程序,不停的接收数据并显示出来 */#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #in

似水流年 568

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何用C语言从零实现TCP/UDP客户端服务器通信:完整指南

GitHub加速计划的c/C项目是一个面向教育目的的算法集合,包含数学、机器学习、计算机科学和物理等多个领域的C语言实现。其中,客户端服务器编程模块提供了TCP和UDP协议的完整实现,是学习网络编程的理想资源。 ## 📋 客户端服务器通信基础 在网络编程中,客户端服务器模型是最基础也最常用的架构。该项目通过简洁的C语言代码展示了两种核心传输协议的实现: - **TCP(传输控制协议)**:

gitblog_01014的博客 825

【Linux篇章】Socket 套接字,竟让 UDP 网络通信如此丝滑,成为一招致胜的秘籍!

本篇文章将带大家了解网络通信是如何进行的(如包括网络字节序,端口号,协议等) ;再对socket套接字进行介绍;以及一些udp-socket相关网络通信接口的介绍及使用;最后进行对基于udp的网络通信(服务端与客户端之间)进行测试和外加模拟实现的基于udp通信的简单的英译汉词典与多人聊天室;欢迎阅读!!!

羑悻的博客. 3791

Linux C 的网络编程示例

Linux C 的网络编程示例 Socket编程

A_New_World的博客 565

【计算机网络 实验七】LINUX环境下UDP通信程序设计

实验记录,可能存在错误,仅供学习参考。

2301_79595769的博客 1637

Linux C/C++ UDP套接字编程实战:从原理到回声服务器实现

在网络编程中,套接字(Socket)是进程间通信的核心接口,它抽象了网络数据传输的底层细节。其工作原理是基于操作系统提供的系统调用,在应用层与传输层之间建立桥梁,实现不同主机间的数据交换。UDP(用户数据报协议)作为一种无连接的传输层协议,其技术价值在于提供了低延迟、高吞吐量的通信能力,特别适合对实时性要求高、可容忍少量丢包的场景,如音视频直播、在线游戏和物联网传感数据上报。通过理解UDP套接字编程中的字节序转换、数据报边界处理等核心机制,开发者能够构建轻量级、高性能的网络应用。本文以Linux C/C++

weixin_30770783的博客 374

基于UDP的网络客户端和服务端模型IO函数

【代码】基于UDP的网络客户端和服务端模型IO函数。

qq_68495605的博客 340

socket 套接字 - UDP [ 上 ]

本文介绍了UDP网络编程基础,重点讲解了一个简单的Echo服务器实现。文章首先介绍了socket系统调用的基本用法,包括参数设置和套接字创建。然后详细说明了bind系统调用的作用和使用方法,特别强调了服务器端需要显式绑定端口的重要性。在实现Echo服务器时,文章展示了如何处理客户端消息并回显,包括使用recvfrom接收数据和sendto发送数据的流程。针对网络访问问题,提出了使用INADDR_ANY宏来监听所有网络接口的解决方案,使服务器可以接收来自不同网络的连接请求。最后,文章对代码进行了优化,采用分层

Small_entreprene的博客 912
上一篇: Ant Sample
下一篇: Linux DOS Program.Linux下DOS程序.
AD_LI
博客等级 码龄19年 18粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值