udp编程 实例
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编程 实例的更多相关文章
- python udp编程实例
与python tcp编程控制见 http://blog.csdn.net/aspnet_lyc/article/details/39854569 c++ udp/tcp 编程见 http://blo ...
- 【网络编程1】网络编程基础-TCP、UDP编程
网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- 62 网络编程(三)——UDP编程
UDP编程标准步骤 服务器端 使用DatagramSocket创建服务端:DatagramSocket server = new DatagramSocket(port);//参数为自定义端口号 准备 ...
- PHP多进程编程实例
这篇文章主要介绍了PHP多进程编程实例,本文讲解的是在Linux下实现PHP多进程编程,需要的朋友可以参考下 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进 ...
- c#摄像头编程实例 (转)
c#摄像头编程实例 摄像头编程 安装摄像头后,一般可以找到一个avicap32.dll文件 这是一个关于设想头的类 using system;using System.Runtime.Intero ...
- Linux学习四:UDP编程(上)
关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...
- JAX-RS 2.0 REST客户端编程实例
JAX-RS 2.0 REST客户端编程实例 2014/01/28 | 分类: 基础技术, 教程 | 0 条评论 | 标签: JAX-RS, RESTFUL 分享到:3 本文由 ImportNew - ...
- Android studio 下JNI编程实例并生成so库
Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...
随机推荐
- [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 ...
- Generator yield语法和 co模块
Generator yield 语法使用,也叫生成器,实际上就是多个异步按顺序执行 1.下面是一个读取两个文件的例子 const fs = require('fs'); const readFile ...
- maven 详解二
转自 http://www.cnblogs.com/whgk/p/7121336.html 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ss ...
- GO language
看到有人说GO是未来10年的主流了,不论是速度迅速接近于C,还是语法简洁接近于C,结果尽然还是编译型的,不需要虚拟机,生成程序已经是本地字节码. 得,我不淡定了,这个不学,枉为程序员啊. 今天,讲讲l ...
- 查看手机cpu信息
adb shell getprop ro.product.cpu.abi
- vue中实现浏览器的复制功能
点击复制,就可以实现copy <p class="inline-block"> <span >{{fenxiao.appSecret}}</span& ...
- Spark_JGroupByKey
package core.java; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf ...
- sqlserver恢复数据库被挂起
已测试过,直接执行此句后,数据库恢复原状态.数据不会丢失.具体是什么意思,暂时没来得及搞明白 RESTORE database dbname with norecovery
- centos6.5安装无线网卡驱动并配置wifi
1.驱动下载地址: RTL8188无线网卡驱动下载 链接:https://pan.baidu.com/s/1ms-EbQCDxa76jPhYUPmr9Q 密码:r2vu 2.安装步骤: [root@c ...
- [ English ] 俚语 “Ping me=打我电话”
有次做项目的时候跟一个美国人通过MSN讨论一个问题.突然他说了一句,“Can you ping me in 15 minutes?” Ping Me,什么意思啊? 首先我们来看看“Ping”的原意: ...