Linux C socket 编程之UDP
发送方:
/*
* File: main.c
* Author: tianshuai
*
* Created on 2011年11月29日, 下午10:34
*
* 主要实现:发送20个文本消息,然后再发送一个终止消息
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int port=6789;
int main(int argc, char** argv) {
int socket_descriptor; //套接口描述字
int iter=0;
char buf[80];
struct sockaddr_in address;//处理网络通信的地址
bzero(&address,sizeof(address));
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr("127.0.0.1");//这里不一样
address.sin_port=htons(port);
//创建一个 UDP socket
socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);//IPV4 SOCK_DGRAM 数据报套接字(UDP协议)
for(iter=0;iter<=20;iter++)
{
/*
* sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
* 将格式化后到 字符串存放到s当中
*/
sprintf(buf,"data packet with ID %d\n",iter);
/*int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags,const struct sockaddr FAR* to, int tolen);
* s:一个标识套接口的描述字。
* buf:包含待发送数据的缓冲区。
* len:buf缓冲区中数据的长度。
* flags:调用方式标志位。
* to:(可选)指针,指向目的套接口的地址。
* tolen:to所指地址的长度。
*/
sendto(socket_descriptor,buf,sizeof(buf),0,(struct sockaddr *)&address,sizeof(address));
}
sprintf(buf,"stop\n");
sendto(socket_descriptor,buf,sizeof(buf),0,(struct sockaddr *)&address,sizeof(address));//发送stop 命令
close(socket_descriptor);
printf("Messages Sent,terminating\n");
exit(0);
return (EXIT_SUCCESS);
}
接受方:
/*
* File: main.c
* Author: tianshuai
*
* Created on 2011年11月29日, 下午10:34
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int port=6789;
int main(int argc, char** argv) {
int sin_len;
char message[256];
int socket_descriptor;
struct sockaddr_in sin;
printf("Waiting for data form sender \n");
bzero(&sin,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=htonl(INADDR_ANY);
sin.sin_port=htons(port);
sin_len=sizeof(sin);
socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);
bind(socket_descriptor,(struct sockaddr *)&sin,sizeof(sin));
while(1)
{
recvfrom(socket_descriptor,message,sizeof(message),0,(struct sockaddr *)&sin,&sin_len);
printf("Response from server:%s\n",message);
if(strncmp(message,"stop",4) == 0)//接受到的消息为 “stop”
{
printf("Sender has told me to end the connection\n");
break;
}
}
close(socket_descriptor);
exit(0);
return (EXIT_SUCCESS);
}
转载于:https://www.cnblogs.com/JPAORM/archive/2011/11/30/2510066.html
Linux C socket 编程之UDP相关推荐
- Linux下socket编程之UDP简单实现
本文实现一个简单的UDP小例子,来说明Linux下socket编程之UDP的简单实现.本文主要包括三个部分:服务器端的实现,客服端的实现和通信测试.实现的功能:客服端发送一条消息给服务器端,服务器端把 ...
- Linux下Socket编程之UDP原理
一.设计UDP Server类 人们通常用电话连线来说明TCP协议,而UDP协议,则常常用邮递来做比喻.与TCP有连接的信息传输方式不同,UDP协议被认为是对底层IP协议简单的扩展:协议并不保证每个数 ...
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
转载:http://blog.csdn.net/apollon_krj/article/details/53437764#0-tsina-1-58570-397232819ff9a47a7b7e80a ...
- Linux下Socket编程之TCP应用
现在,我们用前面所构建的socket类,重新设计<Linux下Socket编程之TCP Server端>中echo的服务器,然后设计客户端程序. echo服务器的工作原理很简单: 1.接收 ...
- Linux下Socket编程之TCP Server端
一.建模 绝大部分关于socket编程的教程总是从socket的概念开始讲起的.要知道,socket的初衷是个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中 ...
- Linux下Socket编程之TCP原理
一.Socket异常信息 之所以把对异常信息的介绍放到原理之前讲,是因为由于socket本身的复杂性,导致了产生各种异常的复杂性.我们应该时刻铭记的是,sokcet本身属于系统(OS),是系统对TCP ...
- Linux C socket 编程之TCP
本文主要是,简单实现tcp连接的两个程序.本文编写,假设读者有socket 编程思想.熟悉C编程. 服务端: #include <stdio.h> #include <stdlib. ...
- 黑马程序员:Socket编程之(UDP vs TCP)
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- UDP和TCP都是传输协议,设备之间遵循通讯 ...
最新文章
- 以假乱真的“人造脸”,能骗过面部识别吗?
- C/S架构程序多种类服务器之间实现单点登录(转)
- Failed to start mongod.service: Unit mongod.service not found
- 专有云传统HSF升级Pandora Boot开发
- 使用URL在线语音合成
- 前端学习(2309):react之同级传值
- 服务器运行容器工具大盘点!
- java的基本循环结构_Java基础之(九):循环结构
- android react混合开发框架,7个混合式移动开发框架
- keil格式化代码方法
- 【Elasticsearch教程13】Mapping字段类型之nested
- 安利这几款软件给需要的你
- Chrome浏览器内置截图工具(不需要安装插件)
- 朋也bbs开源学习(一)
- 数据可视化Echarts学习指南
- 何时“大庇天下寒士俱欢颜”(附笑话)
- 想学习C语言?这里有非常实用的C语言技巧,进来看看吧!
- (SVN笔记)SVN服务端+SVN客户端Tortoise——安装配置
- 拼多多回应将总部从中国迁至爱尔兰:严重失实;微软开放 Bing Chat 访问,无需等待;OpenAI 亏损翻倍|极客头条
- 【JavaScript-内置对象】找对象,那家好,内置对象错不了,方便简单,还好用
热门文章
- 第三章 进程管理笔记
- textBox的Key_Down事件
- android 常用命令随手记
- Java虚拟机工作原理具体解释
- IOS 预览pdf,word文档的集中方式
- Android网络通信的六种方式
- Linux 下 I/O 多路复用技术 epoll
- Linux操作Oracle(6)——Oracle11g OPatch 打补丁全纪录【Oracle11g windowsX64位环境+OPatch11.2.0.3.28】及资源下载
- Java三种类型之间的转换方法:Date、String、Calendar类型之间的转化
- 读书_w3c架构师01通用设计与方法论