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 ...
随机推荐
- linux常用终端命令(三)远程管理命令
三.远程管理常用命令 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 1.关机/重启 序号 命令 对应英文 作用 01 shutdow ...
- Python 字符串,元祖,列表之间的转换
1.字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' 2. ...
- docker-配置网桥-自定义网络
容器网络访问原理 桥接宿主机网络 临时生效: # 网桥名称 br_name=br0 # 添加网桥 brctl addbr $br_name # 给网桥设置IP ip addr add 192.168 ...
- Spring 的 AOP 概述和底层实现
Spring 的 AOP 概述和底层实现 1. 什么是 AOP AOP (Aspect Oriented Programing),即面向切面编程 AOP 采取横向抽取机制,取代了传统纵向继承体系重复性 ...
- 01docker基本概念
docker基本概念 官方文档URL:https://docs.docker.com/ 1.Docker的构想是要实现"Build, Ship and Run Any App, Anywhe ...
- charles 抓包 (一)
在web.app开发中经常需要通过抓包来定位页面.接口返回数据的问题.在mac系统中,charles是一款功能丰富的抓包软件.可以实现app的数据抓包. 工具:charles 附送charles的破解 ...
- javascript——定义函数方式
1:有名函数定义方式 2:匿名函数定义方法 https://www.cnblogs.com/wl0000-03/p/6050108.html console.log(add(3,6)); (funct ...
- Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
其实原因很简单,就是翻译的结果 匿名内部类和局部内部类只能引用外部的fianl变量 把变量变成fianl就行了 第一次知道啊 记小本本.......
- 解决sql "Compatibility_199_804_30003" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。
关联条件加 COLLATE Compatibility_199_804_30003
- 谁是嫌疑犯问题Python枚举法
原文:https://blog.csdn.net/yunzifengqing/article/details/81941592 问题描述:有6名犯罪嫌疑人A.B.C.D.E.F,已知如下事实: A.B ...