
通用:网络编程
丁大黄
Android开发
展开
-
【网络编程】Https的加密流程 / 对称加密和非对称加密 / SSL证书
在实际应用中,对称加密和非对称加密往往结合使用,以发挥各自的优势。例如,在HTTPS协议中,服务器首先使用非对称加密与客户端交换一个临时的对称密钥,然后客户端和服务器使用这个对称密钥进行后续的通信加密,这样可以保证密钥交换的安全性,同时也能享受到对称加密的高效率。在HTTPS协议中,服务器首先使用非对称加密与客户端交换一个临时的对称密钥,然后客户端和服务器使用这个对称密钥进行后续的通信加密,这样可以保证密钥交换的安全性,同时也能享受到对称加密的高效率。具体来说,HTTPS 工作过程中涉及到的密钥有三组。原创 2024-11-27 11:35:16 · 728 阅读 · 0 评论 -
【网络】Windows电脑端本地ip和公网ip的获取
cmd调出命令行查电脑本地ip:ipconfig查电脑公网ip:下列命令选一curl ipinfo.iocurl cip.cccurl ifconfig.me curl myip.ipip.netcurl icanhazip.com原创 2022-03-22 21:45:00 · 6947 阅读 · 1 评论 -
【网络编程】netty
Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景要透彻理解Netty , 需要先学习 NIO , 这样我们才能阅读 Netty 的源码。private static final int DEFAULT_EVENT_LOOP_THREADS = Math.m转载 2021-09-08 19:04:46 · 342 阅读 · 1 评论 -
【工具】telnet用法
连接本机的6666端口:启动cmd,输入:telnet 127.0.0.1 6666进入一个只有横短光标闪烁的黑窗口,按住 ctrl + ] 两个按键,可以向指定端口发送数据。原创 2021-08-14 15:44:43 · 815 阅读 · 0 评论 -
【Android】用postman查看用户GitHub上的仓库信息
在postman中https://api.github.com/users/Zenera0301/repos可以查看指定用户GitHub上的仓库信息原创 2021-06-01 20:20:40 · 225 阅读 · 0 评论 -
【Android】WebView安全漏洞问题
参考:https://blog.csdn.net/carson_ho/article/details/64904635https://blog.csdn.net/qq_42014702/article/details/100899046https://blog.csdn.net/feather_wch/article/details/82292061webview常见的坑(任意命令执行漏洞)API <= 16时,WebView.addJavascriptInterface()有安全原创 2021-03-18 22:28:26 · 483 阅读 · 1 评论 -
【Android】判断手机的网络是否联通
1 获取权限 <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>2 工具类public class TestNetwork { private static final String TAG = "TestNetwork"; /** * Unknown network class原创 2021-03-05 10:21:13 · 624 阅读 · 1 评论 -
【Android】多线程知识储备—下载网络资源,下载进度显示
多线程原创 2020-11-04 10:25:41 · 267 阅读 · 0 评论 -
【Android】网络编程数据处理
1、需要申请权限:<uses-permission android:name="android.permission.INTERNET" />原创 2020-10-17 21:33:26 · 222 阅读 · 1 评论 -
【Android】WebView使用方法及踩坑记录
使用方法新建Activity:WebViewButtonActivitypackage com.jsc4.aboutactivity;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Uri;import andr原创 2020-09-30 22:41:15 · 1634 阅读 · 0 评论 -
《TCP IP网络编程》第十八章 多线程服务器端的实现
第十八章 多线程服务器端的实现18.1 理解线程的概念引入线程的背景多进程模型的缺点:创建进程的过程会带来一定的开销为了完成进程间数据交换,需要特殊的IPC技术但最主要的是:每秒少则数十次,多则数千次的‘上下文切换’,这个是创建进程时最大的开销。上下文切换:运行程序前需要将相应的进程信息读入内存,如果运行进程A后需要紧接着运行进程B,就应该将进程A的相关信息移出内存,并读入进程B相关信息,这就是上下文切换。此时进程A的数据将被移动到硬盘,上下文切换需要很长时间。引入线程,是为了将进程的原创 2020-07-27 22:27:36 · 330 阅读 · 0 评论 -
《TCP IP网络编程》第十七章 优于select的epoll
第十七章 优于select的epoll实现I/O复用的传统方法包括:select函数、epoll函数。17.1 epoll理解及应用select复用方法,无论如何优化程序性能也无法同时接入上百个客户端。这种局限性催生了Linux下的epoll诞生。基于select的I/O复用技术慢的原因两点:调用select函数后常见的针对所有文件描述符的循环语句每次调用select函数时都要向函数传递监视对象信息(这个格外降低性能)针对第2点,可以通过以下方式弥补:仅向操作系统传递1次监视对象,监视原创 2020-07-26 08:14:29 · 318 阅读 · 0 评论 -
《TCP IP网络编程》第十六章 关于I/O流分离的其他内容
第十六章 关于I/O流分离的其他内容通过服务器端的半关闭状态接收客户端最后发送的字符串。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#define BUF_SIZE 1024int main(int argc, char* argv[原创 2020-07-12 22:11:36 · 164 阅读 · 0 评论 -
《TCP IP网络编程》第十五章 套接字和标准I/O
进入Part2 基于Linux的编程第十五章 套接字和标准I/O15章介绍利用标准I/O函数收发数据的方法。15.1 标准I/O函数的优点将标准I/O函数用于数据通信,好处:良好的移植性可以利用缓冲提高性能(使用fputs函数发送字符串时,首先将数据传递到标准I/O函数的输出缓冲,然后,数据将移动到套接字输出缓冲,最后将字符串发送到对方主机)使用套接字缓冲主要是为了实现TCP协议而设立的,使用标准I/O缓冲主要是为了提高性能。传输的数据量:由于头信息的存在,1个字节发送10次和10个字原创 2020-07-12 22:05:37 · 229 阅读 · 0 评论 -
《TCP IP网络编程》第十四章 多播与广播
第十四章 多播与广播14.1 多播多播接近UDP的实现方式,区别在于多播可以同时向多个主机传递数据。向网络传递1个多播数据包时,路由器将复制该数据包并传递到多个主机(不会向同一个区域发送多个相同数据包,主要用于多媒体数据的实时传输)。多播组是D类IP地址(224.0.0.0-239.255.255.255)。不少路由器不支持多播,或即便支持也因网络拥堵问题故意阻断多播,为了在不支持多播的路由器中完成多播通信,会使用隧道技术(Tunneling)(这个不是程序员考虑的问题)。TTL,time to l原创 2020-07-12 16:15:25 · 306 阅读 · 0 评论 -
《TCP IP网络编程》第十三章 多种I/O函数
第十三章 多种I/O函数Linux平台下的send&recv函数:与Windows平台下的基本相同,声明的结构体名称上有些区别#include<sys/socket.h>ssize_t send(int sockfd, const void* buf, size_t nbytes, int flags); sockfd 表示数据传输对象的连接的套接字文件描述符 buf 保存待传输数据的缓冲地址值 nbytes 待传输的字节数 flags 传输数据时原创 2020-07-12 12:27:21 · 234 阅读 · 0 评论 -
《TCP IP网络编程》第十二章 I/O复用
第十二章 I/O复用使用select函数:#include<sys/select.h>#include<time.h>int select(int maxfd, fd_set* readset, fd_set* writeset, fd_set* exceptset, const struct timeval* timeout); maxfd 监视对象文件描述符数量 readset 将所有关注“是否存在待读取数据”的文件描述符注册到fd_set型变量,并传递其地原创 2020-07-11 23:44:39 · 306 阅读 · 0 评论 -
《TCP IP网络编程》第十一章 进程间通信
第十一章 进程间通信管道PIPE#include<unistd.h>int pipe(int filedes[2]); filedes[0] 通过管道接收数据时使用的文件描述符,管道出口 filedes[1] 通过管道传输数据时使用的文件描述符,管道入口成功返0,失败返-1通过一个管道进行数据交互:数据进入管道后成为无主数据,谁先调用read谁先获取数据,故将数据写入管道后要sleep一段时间再read。sleep(3);睡眠3秒是为了显示时格式不错乱。[root@VM原创 2020-07-11 14:56:54 · 285 阅读 · 0 评论 -
《TCP IP网络编程》第十章 多进程服务器端
signal.c:#include<stdio.h>#include<unistd.h>#include<signal.h>void timeout(int sig){ if(sig == SIGALRM){ puts("Time out!"); } alarm(2);}void keycontrol(int sig){ if(sig == SIGINT){原创 2020-07-11 13:36:47 · 285 阅读 · 0 评论 -
《TCP IP网络编程》第八章 域名及网络地址
第八章 域名及网络地址8.1 域名系统DNS(Domain Name System,域名系统)。DNS是对IP地址和域名相互转换的系统,核心是DNS服务器。域名,是用来代表指定的IP地址的,因为IP地址非常难记,提供网络服务的服务器端虽然是通过IP地址区分的,但是IP地址太难记了,必须得找个别的容易记的形式来交换服务器端的地址信息。域名,是赋予服务器端的虚拟地址,而非实际地址。需要将虚拟地址转换成实际地址。DNS服务器就是干这个转换工作的。所有计算机中都记录着默认DNS服务器地址 ,通过这个默认原创 2020-07-07 21:17:12 · 204 阅读 · 0 评论 -
《TCP IP网络编程》第七章 优雅地断开套接字连接
第七章 优雅地断开套接字连接直接调用close或closesocket函数单方面断开连接,不叫优雅。7.1 基于TCP的半关闭单方面断开连接带来的问题主机A强行close后,由主机B传输的、主机A必须接收的数据也销毁了,所以不优雅。只关闭一部分数据交换中使用的流的方法就叫优雅的方法。断开一部分是指:可以传输数据但是无法接收,或可以接收数据但无法传输,就是只关闭流的一半。套接字和流两台主机之间有两个流,一个从A到B,一个从B到A,只断开其中的一个流针对优雅断开的shutdown函数用于半关原创 2020-07-02 23:37:58 · 432 阅读 · 0 评论 -
《TCP IP网络编程》第六章 基于UDP的服务器端/客户端
第六章 基于UDP的服务器端/客户端6.1 理解UDPTCP像电话一样可靠,UDP像寄信一样不可靠。UDP可靠性略弱,但性能更强。TCP为了提供可靠的数据传输服务,在不可靠的IP层进行流控制,而UDP缺少这种流控制机制。每次交换的数据量越大,TCP的传输速率就越接近UDP的传输速率。UDP内部工作原理IP的作用:让离开主机B的UDP数据包准确传递给主机AUDP的作用:根据端口号将传到主机的数据包交付给最终的UDP套接字UDP的高效使用UDP也是具有一定的可靠性的,不要认为它完全不可靠。原创 2020-07-01 23:57:39 · 293 阅读 · 0 评论 -
《TCP IP网络编程》第五章 基于TCP的服务端/客户端(2)
第五章 基于TCP的服务端/客户端(2)5.1 回声客户端的完美实现第四章提到的问题解决方法:因为可以提前确定接收数据的大小,若之前传输了20字节长的字符串,那么在接收时循环调用read函数读取20个字节即可。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/sock原创 2020-06-30 23:39:39 · 439 阅读 · 1 评论 -
《TCP IP网络编程》第四章 基于TCP的服务端/客户端(1)
第四章 基于TCP的服务端/客户端(1)本章讨论的问题是:通过套接字收发数据。数据传输方式有两种,一种是面向连接的套接字,一种是面向消息的套接字,本章继续讨论面向连接的服务端和客户端的编写。4.1 理解TCP和UDP根据数据传输方式不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字。TCP面向连接,又称基于流的套接字。流(stream)TCP:transmission control protocol 传输控制协议,对数据传输过程的控制。TCP/IP协议栈链路层——IP层——TCP原创 2020-06-29 22:00:28 · 507 阅读 · 0 评论 -
《TCP IP网络编程》第三章 地址族与数据序列
第三章 地址族与数据序列本章讲给套接字分配IP地址和端口号的方法。3.1 分配给套接字的IP地址和端口号IP是网络协议(Internet Protocol)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号。网络地址为了使计算机连接到网络,并收发数据,必须向其分配IP地址。IP地址分为两类:IPv4和IPv6。主要区别是用来表示IP地址所用的字节数不同,目前通用的地址族是IPv4。IPv4标准的4字节IP地址 == 网络地址原创 2020-06-28 20:56:04 · 704 阅读 · 0 评论 -
《TCP IP网络编程》第二章 套接字类型与协议设置
第二章 套接字类型与协议设置2.1 套接字协议及其数据传输特性关于协议协议就是为了完成数据交换而定好的约定。创建套接字#include<sys/socket.h>int socket(int domain, int type, int protocol); domain 套接字中使用的协议族信息 type 套接字数据传输类型信息 protocol 计算机通信中使用的协议信息协议族(domain)sys/socket.h中声明的协议族名称协议族原创 2020-06-25 18:06:54 · 338 阅读 · 0 评论 -
《TCP IP网络编程》第一章 理解网络编程和套接字
第一章 理解网络编程和套接字1.1 理解网络编程和套接字服务器端套接字:#include<sys/socket.h>int socket(int domain, int type, int protocol); 创建套接字成功时返回文件描述符,失败上返回-1int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);给创建好的套接字分配地址信息(IP地址和端口号)成功时返回0,失败上返回-1int li原创 2020-06-24 19:56:18 · 796 阅读 · 0 评论