![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络通讯
David.li
这个作者很懒,什么都没留下…
展开
-
手机UDP穿透问题
手机与家用网络做UDP穿透时,如果网络不是同一家的,比如手机是移动,网络是电信,则可能无法穿透原因可能是:1.网络提供商对UDP有限制2.网络提供商分配给手机的公网ip是假ip,是内部的ip...原创 2020-10-08 15:37:00 · 722 阅读 · 0 评论 -
Linux系统中添加IPv6模块
嵌入式开发板默认内核并没有打开IPv6协议栈,对网卡添加IPv6地址是不被允许的,出现“ifconfig: socket: Address family not supported by protocol”可以2种方法来使内核支持:1)重新配置内核,编译镜像,使之支持IPv62)编译IPv6协议栈模块,利用insmod方式加载模块配置内核,并利用make zImage命令编译镜像,这样内核镜像就可以支持IPv6协议栈:依次在内核配置单选择Networking support ->原创 2020-09-14 15:33:14 · 2365 阅读 · 0 评论 -
AF_INET域与AF_UNIX域socket通信原理对比
1.AF_INET域socket通信过程典型的TCP/IP四层模型的通信过程。发送方、接收方依赖IP:Port来标识,即将本地的socket绑定到对应的IP端口上,发送数据时,指定对方的IP端口,经过Internet,可以根据此IP端口最终找到接收方;接收数据时,可以从数据包中获取到发送方的IP端口。发送方通过系统调用send()将原始数据发送到操作系统内核缓冲区中。内核缓冲区从上到下依次经过TCP层、IP层、链路层的编码,分别添加对应的头部信息,经过网卡将一个数据包发送到网络中。...转载 2020-09-14 12:19:29 · 158 阅读 · 0 评论 -
同一个局域网下有两个相同Mac地址的设备会怎样
在数bai据链路层级上,数据是根据MAC地址转发的,如du果存在两个相zhi同的MAC地址则会产生冲突,两台机器dao都无法正常通信。也不是说一个包都发不出去,只是会丢包很严重,因为ARP协议在不停的刷新绑定关系,交换机也在不停的刷新地址表。...原创 2020-09-03 16:38:33 · 10142 阅读 · 0 评论 -
一种基于p2p的透传技术
这种方案适用于流媒体服务器的透传,众所周知服务器现在的流媒体都是先分析流媒体数据然后封装打包然后转发,展示的这套技术是不用管流媒体内容是什么的只用把数据透传到客户端就行,中间可以透传任意流媒体数据。Tunnel aent与Tunnel server一个在客户端一个在服务器端,服务端的拿到数据转发给客户端,客户端再转发给设备。Tunnel server与Tunnel agent可以用p2p技术先找到Thnnel agent的外网ip,当事件发生时服务端主动请求客户端连接把数据推到客户端。...原创 2020-08-07 10:40:46 · 623 阅读 · 0 评论 -
自签名证书和CA机构颁发的证书的区别
自己生成的SSL证书也叫自签名SSL证书,签发很随意,任何人都可以签发,容易被黑客仿冒利用,不是由正规的CA机构颁发的,所以不受浏览器的信任。而付费的SSL证书,是由受信任的CA机构颁发的,申请时会对域名所有权和企业相关信息进行验证,安全级别是比较高的,而且备受各大浏览器的信任。当然是付费的好。自签名SSL证书的缺点如下:1、自签SSL证书最容易被假冒和伪造,被欺诈网站利用自签SS...原创 2020-03-03 23:04:59 · 6571 阅读 · 0 评论 -
https请求过程
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。HTTPS简介HTTPS其实是有两部分组成:HTTP +SSL/ TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。1...转载 2020-03-03 23:00:08 · 349 阅读 · 0 评论 -
error code is 28,error message:Timeout was reached
解决:1、hosts里面的对应关系删除2、curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);原创 2020-01-02 11:33:36 · 2762 阅读 · 1 评论 -
用select替代usleep导致的线程阻塞问题
写一个延迟函数,usleep是延迟函数有时导致线程阻塞会因为有定时器终止的信号(SIGALRM)产生时会一些未定义的情况,建议少用,我们目前都换成了select替代,具体代码如下void Msleep(unsigned int MilliSecond){ struct timeval time; time.tv_sec = MilliSecond / 1000;//seconds...原创 2019-05-24 10:22:06 · 1622 阅读 · 0 评论 -
linux 下判断wifi连接状态的代码
查看wifi连接状态,有时候wifi断开连接了但是我们不知道,以至于不能重新连接上wifi,这时候我们需要一个判断来知道wifi时候断开了,下面这段代码就是来检测wifi连接状态的,代码非常简单/*********************************************************************** 函数名称: * 功能描述:* 输入参数:...原创 2019-05-23 11:49:08 · 6403 阅读 · 2 评论 -
tcp server,包括端口复用,进程异常退出问题修复
有个朋友因为工作需要让我写一个tcpserver demo给他,于是有了下面这段代码,本程序包含了端口复用,进程异常退出问题的修复,希望对大家有所帮助!#include<stdlib.h>#include<stdio.h>#include<sys/socket.h>#include<netdb.h>#include<s...原创 2019-05-16 13:54:59 · 889 阅读 · 0 评论 -
htonll和ntohll函数的实现
由于机器之间存在大小端的问题,所以需要一个统一的标准,那就是网络字节序,目前我们所知道的就是htonl,ntohl, htons,ntohs,这些用的比较多一些,对于long long类型还不知道怎么转换,下面我将给出具体解决办法,其实用到了htonl和ntohl和移位操作。#include <stdio.h>#include <arpa/inet.h>#i...原创 2019-05-21 09:35:12 · 9279 阅读 · 0 评论 -
0.0.0.0与255.255.255.255与127.0.0.1的区别
一、0.0.0.0严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。二、255.255.255.2...原创 2018-04-05 12:07:10 · 3884 阅读 · 0 评论 -
socket网络编程中read与recv区别
socket网络编程中read与recv区别使用read接收文件,由于传过来的文件大小错误,结果导致程序卡死在read处,之后改用recv接收。 recv使用MSG_DONTWAIT,在发现多次接收长度小于等于0时,中断接收返回。 下面是摘抄的一段read和recv区别的介绍。1、read 与 recv 区别read 原则:数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待。所以一般情...原创 2018-04-05 12:09:17 · 762 阅读 · 0 评论 -
linux下socket指定网卡
系统中存在两个网卡,如何根据socket号知道哪个连接(tcp)在哪个网卡上? 根据getpeername好像有点行不通。或者通过SIOCGARP?netlink? 将问题进行分解,分为主动方式和被动方式两种。主动方式即是系统调用socket创建接口得到的socket号,被动方式即是通过类似accept得到的socket号。 主动方式创建之后,可以利用setsockopt的SO_BINDT...转载 2018-04-07 22:20:54 · 8721 阅读 · 0 评论 -
吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
开发的原因,需要对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念做下了解,查自百度百科,记录如下:1. 响应时间(RT) 响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同...转载 2019-02-16 09:26:38 · 325 阅读 · 0 评论 -
TUTK p2p穿透的使用介绍
1、p2p连通图描述:(1)设备注册到P2P服务器(2)客户端向P2P服务器请求P2P连接服务(3)P2P服务器为客户端提供全套打孔服务(4)P2P服务器为设备提供全套打孔服务 (5) 设备和客户端直接连接,不涉及P2P服务器Relay connection is used rather than P2P when P2P connection fails....原创 2019-02-16 13:44:51 · 14862 阅读 · 16 评论 -
post实现图片上传
上传图片方式有很多,今天给大家介绍一个开源的库使用的方法,希望对大家有所帮助!#include <stdio.h>#include <string.h>#include <curl/curl.h>int main(int argc, char *argv[]){ CURL *curl; CURLcode res; st...原创 2019-03-22 15:14:47 · 9910 阅读 · 0 评论 -
wifi经典的AP与STA两种模式的使用及配置
下面来介绍下wifi的两种经典模式的配置,ap模式和sta模式,加载ko的步骤省略了因为每个厂家不一样。sta模式启动killall wpa_supplicant killall udhcpcwpa_supplicant -iwlan0 -Dnl80211 -c/data/misc/wpa_supplicant.conf -Bwpa_cli -i wlan0 add_networ...原创 2019-04-16 14:58:26 · 7096 阅读 · 0 评论 -
客户端死活连不上服务器,原因竟然是time_wait,怎样消除大量的time_wait状态
最近项目中客户端连接服务器时死活都连不上了,服务器查询出现大量time_wait状态,于是迫在眉睫解决问题的着手点是如何避免出现大量的tima_wait状态。下面我将为大家介绍解决的方法:下面让我们先来了温习下tcp的三次握手和四次挥手的过程图tcp三次握手tcp四次挥手在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。T...原创 2019-04-17 17:21:48 · 3695 阅读 · 0 评论 -
linux c 获取当前wifi的ssid用于手机app显示连接到了哪个路由器
最近设备端和app对接时app需要获取当前设备连接的热点名称,于是我写了一个小程序,用到了popen和iwconfig,当然大家还可以从iw库里面获取,希望对大家有所帮助!代码如下:#include <stdio.h>#include <string.h>int CheckWireLessConnectState(char *pSsid){ FI...原创 2019-04-15 13:43:20 · 1671 阅读 · 0 评论 -
系统接口获取网卡ip地址
有时候程序需要获取网卡的ip地址我们习惯于ifconfig获取,有的人也使用popen用ifconfig来获取但是现在我将介绍下通过系统接口获取,代码如下:#include <stdio.h>#include <stdlib.h>#include <ifaddrs.h>#include <arpa/inet.h>int GetS...原创 2019-05-20 10:06:30 · 893 阅读 · 0 评论 -
htons和ntohl的使用事例
#include <stdio.h>#include <arpa/inet.h>void main(){ int netData = htonl(0x1234); int hostData = ntohl(netData); unsigned short a = 0x01; printf("htons=%d htonl=%d ntohl=...原创 2019-05-20 10:08:27 · 1029 阅读 · 0 评论 -
inet_ntoa函数线程不安全
linux下:函数声明:char *inet_ntoa (struct in_addr);返回点分十进制的字符串在静态内存中的指针。所在头文件:<arpa/inet.h>本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接口实现所分配的内存中。应用程序不应假设该内...原创 2018-04-05 11:49:54 · 2978 阅读 · 0 评论