码迷,mamicode.com
首页 > Web开发 > 详细

network programming-简单的UDP客户/服务器模式

时间:2018-03-03 20:33:46      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:drl   png   bin   场景   set   发送数据   本地   卸载   from   

  无连接通信是通过UDP(User Datagram Protocol)/IP(Internet Protocol)协议来完成的,它不能确保可靠的数据传输,但能将数据发送到多个目标,或者接收多个源数据。相较于TCP等连接通信,无连接通信只要服务端先用socket()创建套接字,然后通过bind()绑定指定端口,不必调用listen()、accept(),只需要等待数据即可。

  UDP使用场景:1.网络数据大多是短消息;2.拥有大量的client;3.对数据安全性无特殊要求(当报文发送之后,是无法得知其是否安全完整到达的);4.网络负担非常重,但对响应速度要求高。应用在比如:网络视频会议系统的C/S网络应用。

技术分享图片

客户端程序流程

step1 初始化Socket库

step2 创建套接字

SOCKET sClient = socket(AF_INET, SOCK_DGRAM, 0);

step3 填写服务器地址

sockaddr_in server;

memset(&server, 0, sizeof(sockaddr_in));

server.sin_family = AF_INET;

server.sin_addr.s_addr = inet_addr(argv[1]);

server.sin_port = htons((u_short)atoi(argv[2]));

step4 与服务器通信(数据通讯),进行信息处理

(发送数据)

char buff[512] = {0};

strcpy(buff, "I am client");

int nRet = sendto(sClient, buff, strlen(buff)+1, 0, (struct sockaddr*)&server, sizeof(server));

(接收数据)

char buff[512];

int nAddrLen = sizeof(server);

memset(buff, 0, sizeof(buff));

nRet = recvfrom(sClient, buff, sizeof(buff), 0, (struct sockaddr*)&server, &nAddrLen);

step5 通信结束后关闭套接字

step6 卸载Socket库

服务器端程序流程

step1 初始化Socket库

step2 创建套接字

SOCKET sListen= socket(AF_INET,SOCK_DGRAM,0)

step3 创建本地实体,填写本机地址信息

sockaddr_in local;

memset(&local, 0, sizeof(local));

local.sin_family = AF_INET;

local.sin_addr.s_addr = INADDR_ANY;

local.sin_port = htons((u_short)8888);

step4  绑定一个固定的端口

bind(sListen, (struct sockaddr *)&local, sizeof(local));

step5 接收客户端的数据报,进行处理与通信

接收数据

struct sockaddr_in from;

memset(&from, 0, sizeof(from));

int fromLen = sizeof(from);

char buff[512] = {0};

recvfrom(sListen,buff, sizeof(buff), 0, (struct sockaddr*)&from, &fromLen);

发送数据

char buff[512] = {0};

strcpy(buff, "I am server");

sendto(sListen, buff, strlen(buff+1), 0, (struct sockaddr*)&from, fromLen);

 

step6 通信结束后关闭套接字

closesocket(sListen);

step7 卸载Socket库

 

 

  

 

network programming-简单的UDP客户/服务器模式

标签:drl   png   bin   场景   set   发送数据   本地   卸载   from   

原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8502631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!