本代码根据老师提供的tcp示例改写

一、UDP socket 编程模型

二、使用UDP协议实现一个简单的通讯程序

1.服务器端

#include<stdlib.h>
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>void print_usage(char * cmd)
{fprintf(stderr," %s usage:\n",cmd);fprintf(stderr,"%s  [port]\n",cmd);}int main(int argc,char** argv)
{struct sockaddr_in server;struct sockaddr_in client;int sockfd;int len;int port;int sendnum;int recvnum;int opt;char send_buf[2048];char recv_buf[2048];int addr_len = sizeof(struct sockaddr_in);if ((1>argc)|| (argc >2)){print_usage(argv[0]);exit(1);}if (2==argc) {port = atoi(argv[1]);}memset(send_buf,0,2048);memset(recv_buf,0,2048);opt=SO_REUSEADDR;if (-1==(sockfd=socket(AF_INET,SOCK_DGRAM,0))){perror("create socket error\n");exit(1);}memset(&server,0,sizeof(struct sockaddr_in));server.sin_family = AF_INET;server.sin_addr.s_addr = htonl(INADDR_ANY);server.sin_port = htons(port);if (-1==bind(sockfd,(struct sockaddr *)&server,sizeof(struct sockaddr))){perror("bind error\n");exit(1);}while (1){if (0>(recvnum = recvfrom(sockfd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&client,&addr_len))){perror("recv error\n");//close(sockfd);continue;}recv_buf[recvnum]='\0';printf ("the message from the client is: %s\n",recv_buf);if (0==strcmp(recv_buf,"quit")){perror("the client break the server process\n");close(sockfd);break;}sendnum = sprintf(send_buf,"The message from client is %s\n",recv_buf);sendto(sockfd,send_buf,sizeof(send_buf),0,(struct sockaddr *)&client,sizeof(client));continue;}close(sockfd);return 0;
}

2.客户端

#include<stdlib.h>
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>#define PORT 8900void print_usage(char * cmd)
{fprintf(stderr," %s usage:\n",cmd);fprintf(stderr,"%s IP_Addr [port]\n",cmd);}int main(int argc,char** argv)
{struct sockaddr_in server;int ret;int len;int port;int sockfd;int sendnum;int recvnum;char send_buf[2048];char recv_buf[2048];int addr_len = sizeof(struct sockaddr_in);if ((2>argc)|| (argc >3)){print_usage(argv[0]);exit(1);}if (3==argc) {port = atoi(argv[2]);}if (-1==(sockfd=socket(AF_INET,SOCK_DGRAM,0))){perror("can not create socket\n");exit(1);}memset(&server,0,sizeof(struct sockaddr_in));server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv[1]);server.sin_port = htons(port);if (0>(ret=connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr)))){perror("connect error");close(sockfd);exit(1);}//memset(send_buf,0,2048);//memset(recv_buf,0,2048);while(1){printf("what words do  you want to tell to server:\n");//gets(send_buf);fgets(send_buf,2048,stdin);//sprintf(send_buf,"i am lg,thank for your servering\n");if (0>(len=sendto(sockfd,send_buf,sizeof(send_buf),0,(struct sockaddr *)&server,sizeof(server)))){perror("send data error\n");close(sockfd);exit(1);}if (0>(len=recvfrom(sockfd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&server,&addr_len))){perror("recv data error\n");close(sockfd);exit(1);}recv_buf[len]='\0';printf("the message from the server is:%s\n",recv_buf);     }close(sockfd);
}

三、运行结果

UDP socket 编程示例相关推荐

  1. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家

    Linux UDP socket编程(UDP通讯模型): UDPClient + UDPService. Linux下大多数网络程序都是基于TCP的,很少基于UDP,简单的通讯模型如下,开发时候备用! ...

  2. Java TCP/UDP socket 编程流程总结

    最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就 ...

  3. python(18):网络编程(七层协议+tcp/udp+socket编程)

    Python作为最热门的语言,使我们每个人应该学习的一门技术! 本文针对初学者,我会用最容易的方式告诉你如何入门python! 一.基本网络概念 1.计算机之间如何进行联机 早期: 以太网:局域网与交 ...

  4. TCP socket 编程示例

    本代码为老师提供的示例程序 一.TCP socket 编程模型 二.使用TCP协议实现一个简单的通讯程序 1.服务器端 #include<stdlib.h> #include<std ...

  5. 【Java】UDP Socket编程案例——文件传输聊天工具

    UDP(用户数据报协议)就像日常生活中的邮件投递,是不能保证可靠地寄到目的地.UDP是无连接的,对系统资源的要求较少,UDP可能丢包,也不保证数据顺序.但是对于网络游戏和在线视频等要求传输快,实时性高 ...

  6. python回声程序echo 一行代码_Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

  7. PHP socket编程示例

    写在前面:最级要开始写我们的项目了,是一个网络编程的项目,语言用C++,基于Socket通信,采用JSON数据交换格式,存数据用Mysql数据库.我们开始的困难是不知道如何处理客户端,组内都没有学写A ...

  8. 多线程Java Socket编程示例(转)

    这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送 ...

  9. [zz]Linux 下 socket 编程示例

    本示例为 Client/Server 结构,通过代码演示 Client 如何建立连接,并向远程端发送数据:Server 端如何侦听系统连接请求,接收请求并建立连接,进而获取客户端发来的数据.代码虽短, ...

  10. tcp/udp socket编程异同

    一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 ...

最新文章

  1. 亿级流量架构之服务限流思路与方法
  2. 添加类iOS cocos2d 2游戏开发实战(第3版)
  3. ETSI MEC — 与 5G 的融合
  4. QT的QParameter类的使用
  5. COM编程之四 引用计数
  6. 使用JDOM2.0.4 操作/解析xml
  7. 动态生成的html元素无法调用js函数,如何确保动态生成的div在js函数被调用之前被加载到DOM中?...
  8. Linux下 执行程序
  9. 在ibatis中做等值判断(if-else)
  10. mysql - GTID主从复制
  11. [unity3d]插件2d toolskit
  12. java文件如何打包_java文件如何打包?
  13. 使用Xmanger/Xbrowser 远程桌面Ubuntu 12.04 LTS
  14. 【ZZ】从入门到高阶,你需要刷哪些书?丨高中物理竞赛辅导书推荐
  15. 并发模型第肆讲-pre threaded模型
  16. rtc/webrtc 2017实时音视频大会分享
  17. 数据结构课设 - 平衡二叉树的演示
  18. java 获取图片像素_转:java提取图片中的像素
  19. 追求最优选择的后果,往往是事与愿违,往往是善良的愿望,把人类带入了人间地狱
  20. React-native 路由的使用 导航栏

热门文章

  1. javascript prototype 学习笔记
  2. Qt配置OpenCV教程,亲测已试过(详细版)
  3. 作为一个程序猿你必须会的技能----自学框架!
  4. 二年级孩子适合学C语言吗,小孩子适合学习编程吗?孩童时期对变成的接受程度有多少呢?...
  5. 其他干货——如何做科学报告(oral, poster, eLightning)
  6. Web 插件 之 ECharts 实现中国地图数据的简单展示实现
  7. 积分简明笔记-第二类曲线积分的类型
  8. linux识别罗兰声卡,罗兰系列声卡直播K歌模式调试方法
  9. Excel 导入 SqlServer 导入部分文本为空解决方案
  10. win10 android 手机驱动下载,win10手机刷机包驱动