UNIX下socket通信 - UDP通信
一、UNIX下socket通信:
socket套接字是一种可以进行网络通信的内核对象,它是一个唯一的标示符,一般称它为socket描述符。
注意:UDP通信需要客户端先发送消息,服务端先进行等待客户端发送的消息,记录下客户端的地址,才能向客户端发送消息。= =!
int socket(int domain,int type,int protocol)
功能:创建socket对象
1、domain通信地址类型:
a、AF_UNIX/AF_LOCAL:本地进程通信
b、AF_INET:使用ipv4地址通信
c、AF_INET6:使用ipv6通信
d、AF_UOSPEC:未指定
2、type通信的协议类型(4种,以下列举出最常用的两种):
SOCK_STREAM:数据流协议,TCP面向连接的通信协议
SOCK_DGRAM:数据报协议,UDP面向无连接的通信协议
3、protocol:特殊协议,一般不用,一般为0;
返回值:若成功,返回文件(套接字)描述符; 若出错,返回-1
//socket udp 服务端
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h> int main()
{
//创建socket对象
int sockfd=socket(AF_INET,SOCK_DGRAM,0); //创建网络通信对象
struct sockaddr_in addr;
addr.sin_family =AF_INET;
addr.sin_port =htons(1324);
addr.sin_addr.s_addr=inet_addr("127.0.0.1"); //绑定socket对象与通信链接
int ret =bind(sockfd,(struct sockaddr*)&addr,sizeof(addr));
if(0>ret)
{
printf("bind\n");
return -1; }
struct sockaddr_in cli;
socklen_t len=sizeof(cli); while(1)
{
char buf =0;
recvfrom(sockfd,&buf,sizeof(buf),0,(struct sockaddr*)&cli,&len);
printf("recv num =%hhd\n",buf); buf =66;
sendto(sockfd,&buf,sizeof(buf),0,(struct sockaddr*)&cli,len); }
close(sockfd);
}
//socket udp 客户端
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h> int main()
{
//创建socket对象
int sockfd=socket(AF_INET,SOCK_DGRAM,0); //创建网络通信对象
struct sockaddr_in addr;
addr.sin_family =AF_INET;
addr.sin_port =htons(1324);
addr.sin_addr.s_addr = inet_addr("192.168.0.143"); while(1)
{
printf("请输入一个数字:");
char buf=0;
scanf("%hhd",&buf);
sendto(sockfd,&buf,
sizeof(buf),0,(struct sockaddr*)&addr,sizeof(addr)); socklen_t len=sizeof(addr);
recvfrom(sockfd,&buf,sizeof(buf),0,(struct sockaddr*)&addr,&len); if(66 ==buf)
{
printf(" server 成功接受\n");
}
else
{
printf("server 数据丢失\n");
} }
close(sockfd);
}
UNIX下socket通信 - UDP通信的更多相关文章
- C# 通过socket实现UDP 通信
UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...
- [C++] socket - 2 [UDP通信C/S实例]
服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...
- Linux 简单socket实现UDP通信
服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...
- linux下socket编程-UDP
下面是UDP的服务器的代码: /* server.c */ #include <stdio.h> #include <string.h> #include <netine ...
- 孙鑫 VC++深入详解第14课——TCP通信/UDP通信(转)
原文转自 http://blog.csdn.net/supersonico/article/details/18900319 一.用VC++来编写TCP 服务器/客户端的简单程序. 注意事项: 1.要 ...
- Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信
Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...
- C#的Socket实现UDP协议通信
今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- Envoy 基础教程:使用 Unix Domain Socket(UDS) 与上游集群通信
Envoy Proxy 在大多数情况下都是作为 Sidecar 与应用部署在同一网络环境中,每个应用只需要与 Envoy(localhost)交互,不需要知道其他服务的地址.然而这并不是 Envoy ...
随机推荐
- Python基础(九)--函数
函数的作用 减少重复代码 程序易于维护 程序易于扩展 函数的定义 >>> def calculate(x,y): #定义函数名为calculate,参数为x和y result = x ...
- 怎样使用 v-bind 绑定 html 标签的属性值?
1. 在 Vue 中可是使用 v-bind 对 html 中的 属性 进行绑定, 如下所示, 我们想给这个 a 标签绑定一个 title 值: <!DOCTYPE html> <ht ...
- Java进阶开发-基于Base64的加密与解密操作
基于Base64的加密与解密操作 正常来讲加密基本上永远伴随着解密,所谓的加密或者解密往往都是需要有一些所谓的规则.在JDK1.8开始提供有一组新的加密处理操作,Base64处理.在这个类里面有两个内 ...
- VS2008提示无法打开包括文件:“afxcontrolbars.h”解决办法
主要造成这个问题的主要原因是,在打了SP1的VS2008下创建的项目放在没有打SP1的VS2008下就会报错 解决办法: 一.给VS2008打上SP1补丁即可 此方法比较彻底,但是安装较 ...
- centos 配置mysql主从复制
mysql+centos7+主从复制 MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公 ...
- webpack提取公共js代码
webpack打包js代码与提取公共js代码分析 webpack提取公共js代码示例 一.分析 webpack默认打包js代码时,是将从入口js模块开始,将入口js模块所依赖的js以及模块逐层依赖的模 ...
- element-ui中点击菜单,改变当前菜单背景颜色
需求: vue项目中,点击左侧菜单,tags页显示当前打开的菜单,并且高亮显示当前菜单 实现效果: 实现代码:在vuex里面定义tags存放所有打开的菜单,和当前打开的索引curtagsIndex:, ...
- 【Zabbix】分布式监控系统Zabbix【一】
一.Zabbix功能及特性简介 Zabbix可以获取cpu,内存,网卡,磁盘,日志等信息 1.Zabbix数据收集方式: a.Agent客户端(Agent客户端支持多平台部署) b.如果是无法安装客户 ...
- 【Java】 BIO与NIO以及AIO分析
一.BIO与NIO以及AIO的概念 BIO是同步阻塞式的IO NIO是同步非阻塞的IO (NIO1.0,JDK1.4) AIO是非同步非阻塞的IO(NIO2.0,JDK1.7) 二.BIO简单分析 1 ...
- 修改Vue中的 v-html 内的元素无效问题
其原因就是在 style 样式中没有去处scoped 因为 v-html 会把内容当成子组件,而scoped 会在本身的组件中起作用