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 ...
随机推荐
- 后缀数组练习2:可重叠的k次最长重复子串
其实和上一题是差不多的,只是在二分check的时候有一些小小的改动 1468: 后缀数组2:可重叠的k次最长重复子串 poj3261 时间限制: 1 Sec 内存限制: 128 MB提交: 113 ...
- 前端BOOM和DOOM
BOOM :是指浏览器对象模型,它使JavaScript 有能力与浏览器进行 对话DOM: 是指文档对象模型,通过它可以访问HTML文档的所有元素 Windows对象 所有的浏览器都支持Window ...
- workerman stop失败
1.官网说明:https://www.bookstack.cn/read/workerman-manual/faq-stop-fail.md 2.workerman.pid 中的有一个pid号,置为空 ...
- Linq操作之Except,Distinct,Left Join 【转】
最近项目中用到了Linq中Except,Distinct,Left Join这几个运算,这篇简单的记录一下这几种情形. Except 基础类型使用Linq的运算很简单,下面用来计算两个集合的 ...
- 关于jar冲突的解决方向servlet-api
1.可以考虑尽量往 java自带的jar 靠 比如说jdk-tools 2.如果用springboot项目 让其他jar 排除servlet-api的依赖 <dependency> ...
- 使用webpack + momentjs时, 需要注意的问题
注意开发HTML页面charset, 如是不是utf-8, 比如是shift_jis, 一般会在webpack里用插件EncodingPlugin把开发的utf-8格式转码成shift_jis格式 ...
- google 高清卫星照片
rel: 如何下载 50 年前自己家乡的高清卫星照片 link: https://zhuanlan.zhihu.com/p/30953275
- odoo xml中添加数据的数字代表含义
参考原文:https://alanhou.org/odoo12-import-export-data/ <?xml version="1.0"?> <odoo n ...
- 二、Nginx多站点配置(参考宝塔的)分析
一.基于宝塔配置文件分析(站的配置文件) 新增的站点配置即添加server并包含在nginx内 查找文件: 文件内容: 二.伪静态 伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文 ...
- 网桥 交换机 VLAN 等基本概念---以太网
交换机: 集线器: 基带信号:基带信号就是幅度只有两种离散值的数字信号. 基带传输:用基带信号实现数据传输的方式. 曼彻斯特编码 帧对界和MAC帧 后退算法 和 捕获效应 冲突域 最短帧长 网桥 网桥 ...