server端

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h> void server(int sock){
//1、建立接收缓存字节数组
char recvbuf[] = {};
//2、定义socket
struct sockaddr_in peeraddr;
socklen_t peerlen;
int n;
while(){
//
peerlen = sizeof(peeraddr);
//3、清空接收缓存数组
memset(recvbuf, , sizeof(recvbuf));
//4、开始接收数据
n = recvfrom(sock, recvbuf, sizeof(recvbuf), , (struct sockaddr *)&peeraddr, &peerlen);
//5、判断是否接收完整数据
if(n == -){
perror("recvfrom");
exit(EXIT_FAILURE);
}else if(n > ){
//6、成功接收数据,将缓存数据写入到标准输出,打印到控制台
fputs(recvbuf, stdout);
//7、想客户端回送接收到的数据(回显客户端输入的数据)
sendto(sock, recvbuf, n, , (struct sockaddr *)&peeraddr, peerlen);
}
}
//关闭socket
close(sock);
} int main(void){
int sock;
//创建服务器socket
if((sock = socket(PF_INET, SOCK_DGRAM, )) < ){
perror("socket error");
exit(EXIT_FAILURE);
}
//设置服务器socket参数
struct sockaddr_in servaddr;
memset(&servaddr, , sizeof(servaddr));
//设置socket的协议、端口以及地址
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons();
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //将socket绑定地址
if(bind(sock, (struct sockaddr *)&servaddr, sizeof(servaddr)) < ){
perror("bind error");
exit(EXIT_FAILURE);
}
server(sock);
return ;
}

client端

#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h> void client(int sock){
//2、设置客户端socket参数
struct sockaddr_in servaddr;
memset(&servaddr, , sizeof(servaddr));
//3、设置传输协议、端口以及目的地址
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons();
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //4、创建发送与接收缓存字节数组
int ret;
char sendbuf[] = {};
char recvbuf[] = {};
//5、开始发送数据(此处是发送来自标准输入的数据)
while(fgets(sendbuf, sizeof(sendbuf), stdin) != NULL){
sendto(sock, sendbuf, strlen(sendbuf), , (struct sockaddr *)&servaddr, sizeof(servaddr));
//6、开始接收数据,接收服务端返回的数据
ret = recvfrom(sock, recvbuf, sizeof(recvbuf), , NULL, NULL);
if(ret == -){
perror("recvfrom");
exit(EXIT_FAILURE);
} //fputs(recvbuf, stdout); //将服务端返回的数据写入到标准输出 //7、清空发送与接收缓存
memset(sendbuf, , sizeof(sendbuf));
memset(recvbuf, , sizeof(recvbuf));
}
//8、关闭socket流
close(sock);
} int main(void){
int sock;
//1.创建客户端的socket
if((sock = socket(PF_INET, SOCK_DGRAM, )) < ){
perror("socket");
exit(EXIT_FAILURE);
}
client(sock);
return ;
}

参考:http://www.cnblogs.com/skyfsm/p/6287787.html?utm_source=itdadao&utm_medium=referral

http://blog.csdn.net/chenlycly/article/details/51582257

udp编程 实例的更多相关文章

  1. python udp编程实例

    与python tcp编程控制见 http://blog.csdn.net/aspnet_lyc/article/details/39854569 c++ udp/tcp 编程见 http://blo ...

  2. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  3. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  4. 62 网络编程(三)——UDP编程

    UDP编程标准步骤 服务器端 使用DatagramSocket创建服务端:DatagramSocket server = new DatagramSocket(port);//参数为自定义端口号 准备 ...

  5. PHP多进程编程实例

    这篇文章主要介绍了PHP多进程编程实例,本文讲解的是在Linux下实现PHP多进程编程,需要的朋友可以参考下 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进 ...

  6. c#摄像头编程实例 (转)

    c#摄像头编程实例 摄像头编程 安装摄像头后,一般可以找到一个avicap32.dll文件 这是一个关于设想头的类 using  system;using  System.Runtime.Intero ...

  7. Linux学习四:UDP编程(上)

    关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...

  8. JAX-RS 2.0 REST客户端编程实例

    JAX-RS 2.0 REST客户端编程实例 2014/01/28 | 分类: 基础技术, 教程 | 0 条评论 | 标签: JAX-RS, RESTFUL 分享到:3 本文由 ImportNew - ...

  9. Android studio 下JNI编程实例并生成so库

    Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...

随机推荐

  1. [LeetCode] 849. Maximize Distance to Closest Person_Easy tag: BFS

    In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...

  2. Generator yield语法和 co模块

    Generator  yield 语法使用,也叫生成器,实际上就是多个异步按顺序执行 1.下面是一个读取两个文件的例子 const fs = require('fs'); const readFile ...

  3. maven 详解二

    转自 http://www.cnblogs.com/whgk/p/7121336.html 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ss ...

  4. GO language

    看到有人说GO是未来10年的主流了,不论是速度迅速接近于C,还是语法简洁接近于C,结果尽然还是编译型的,不需要虚拟机,生成程序已经是本地字节码. 得,我不淡定了,这个不学,枉为程序员啊. 今天,讲讲l ...

  5. 查看手机cpu信息

    adb shell getprop ro.product.cpu.abi

  6. vue中实现浏览器的复制功能

    点击复制,就可以实现copy <p class="inline-block"> <span >{{fenxiao.appSecret}}</span& ...

  7. Spark_JGroupByKey

    package core.java; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf ...

  8. sqlserver恢复数据库被挂起

    已测试过,直接执行此句后,数据库恢复原状态.数据不会丢失.具体是什么意思,暂时没来得及搞明白 RESTORE database dbname with norecovery

  9. centos6.5安装无线网卡驱动并配置wifi

    1.驱动下载地址: RTL8188无线网卡驱动下载 链接:https://pan.baidu.com/s/1ms-EbQCDxa76jPhYUPmr9Q 密码:r2vu 2.安装步骤: [root@c ...

  10. [ English ] 俚语 “Ping me=打我电话”

    有次做项目的时候跟一个美国人通过MSN讨论一个问题.突然他说了一句,“Can you ping me in 15 minutes?” Ping Me,什么意思啊? 首先我们来看看“Ping”的原意: ...