套接字

python之socket

别等时光非礼了梦想. 提交于 2019-11-27 10:13:11
socket套接字 什么叫socket socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统.socket在python中就是一个模块. socket两个分类 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信 基于网络类型的套接字家族 套接字家族的名字:AF_INET (还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET) 为什么存在socket抽象层? 如果直接与操作系统数据交互非常麻烦,繁琐,socket对这些繁琐的的操作高度的封装,简化. socket模块函数用法 import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM

网络通信-基本概念:网络、IP地址、端口、socket

旧巷老猫 提交于 2019-11-27 09:43:53
目录 网络通信 1 网络 1.1 网络定义 1.2 使用网络的目的 1.3 总结 2 IP地址 2.1 ip地址的作用 2.2 ip地址的分类 3 端口 3.1 什么是端口 3.2 端口号 3.3 端口的分配 3.3 怎样查看端口 4 socket(进程间通信的一种方式) 4.1 不同电脑上的进程间通信的实现 4.2 socket简介 4.3 创建socket(以python为例) 5 网络通信总结 网络通信 1 网络 1.1 网络定义 网络就是一种辅助双方或者多方能够连接在一起的工具 如果没有网络可想单机的世界是多么的孤单 1.2 使用网络的目的 就是为了联通多方然后进行通信用的,即把 数据从一方传递给另外一方 如果没有网络,编写的程序都是单机的,即不能和其他电脑上的程序进行通信 为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能 1.3 总结 使用网络能够把多方链接在一起,然后可以进行数据传递 所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信 2 IP地址 2.1 ip地址的作用 ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在==本地局域网上是唯一的==。 2.2 ip地址的分类 每一个IP地址包括两部分:网络地址和主机地址 2.2.1 A类IP地址 =

基于TCP的套接字:链接循环

淺唱寂寞╮ 提交于 2019-11-27 07:58:47
# 服务端必须满足至少三点:# 1. 绑定一个固定的ip和port# 2. 一直对外提供服务,稳定运行# 3. 能够支持并发####这个程序可以达到循环链接的功能,一个一个进来,设置半连接池的大小决定能否进来多少个,进来的也要等待一个一个的来###服务端程序from socket import *server = socket(AF_INET, SOCK_STREAM)server.bind(('127.0.0.1', 8081))server.listen(5)# 链接循环while True: conn, client_addr = server.accept() print(client_addr) # 通信循环 while True: try: data = conn.recv(1024) if len(data) == 0: break # 针对linux系统 print('-->收到客户端的消息: ', data) conn.send(data.upper()) except ConnectionResetError: break conn.close()server.close()##客户端程序from socket import *client = socket(AF_INET, SOCK_STREAM)client.connect(('127.0.0.1',

Python高级——TCP协议

末鹿安然 提交于 2019-11-27 07:44:34
1、tcp协议 1.1 基于tcp协议的客户端 1、创建套接字 2、与服务端创建连接 3、发送数据 4、接收数据 5、关闭套接字 1.2 基于tcp协议的服务端 1、创建socket套接字 2、bind绑定服务端的IP和端口 3、listen监听,使服务端的套接字从主动状态变成被动状态,等待连接 4、accept等待客户端的连接,运行之后是阻塞状态,直到有连接 5、收发数据 6、关闭套接字 来源: https://blog.csdn.net/qq_36609737/article/details/99563651

网络编程 实战篇 》》》

半世苍凉 提交于 2019-11-27 07:00:56
一 操作系统基础(需要改网址) 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图1 操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。 ​ 图1   **细说的话,操作系统应该分成两部分功能: 一:隐藏了丑陋的硬件调用接口(键盘、鼠标、音箱等等怎么实现的,就不需要你管了),为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。 例如:操作系统提供了文件这个抽象概念,对文件的操作就是对磁盘的操作,有了文件我们无需再去考虑关于磁盘的读写控制(比如控制磁盘转动,移动磁头读写数据等细节), 二:将应用程序对硬件资源的竞态请求变得有序化 例如:很多应用软件其实是共享一套计算机硬件,比方说有可能有三个应用程序同时需要申请打印机来输出内容

连接模块

天大地大妈咪最大 提交于 2019-11-27 06:17:13
工厂模式? JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) Java 序列化Serializable详解 a)当你想把的内存中的对象保存到一个文件中或者 数据库 中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; Java中this和super的用法总结 java synchronized详解 进程: Java中Runnable和Thread的区别 Volatile: java中volatile关键字的含义 Java中Volatile关键字详解 UDP套接字 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket) SSL套接字 Java SSLSocket的使用 转载于:https://www.cnblogs.com/asawang/p/7195977.html 来源: https://blog.csdn.net/weixin_30562507/article/details/99495806

Linux内核调优参数

安稳与你 提交于 2019-11-27 05:16:47
Linux内核调优参数 #接收套接字缓冲区大小的默认值(以字节为单位)。 net.core.rmem_default = 262144 #接收套接字缓冲区大小的最大值(以字节为单位)。 net.core.rmem_max = 16777216 #发送套接字缓冲区大小的默认值(以字节为单位)。 net.core.wmem_default = 262144 #发送套接字缓冲区大小的最大值(以字节为单位)。 net.core.wmem_max = 16777216 #用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。 net.core.somaxconn = 262144 #当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。 net.core.netdev_max_backlog = 262144 #表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。 net.ipv4.tcp_max_orphans = 262144 #表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。 net

9、网络编程-tcp服务器(1)

纵饮孤独 提交于 2019-11-27 04:54:00
1、创建套接字 2、bind绑定ip和port 作为服务方,ip port 应该是固定的,所以要绑定;客户端一般不绑定 3、listen使套接字变成监听套接字,即变为被动链接 4、accept等待客户的链接 生活中的电话机“ 1、买手机 2、插上手机卡 3、设置成响铃状态,否则别人打电话听不到 4、接听电话-等待别人打进来 **1. ** vim 05-tcp服务器.py 思路:用注释搭建流程 def main(): #1、买手机(创建套接字) #2、插手机卡(绑定 bind ip port) #3、设置成响铃状态(将套接字由主动变为被动 listen) #4、等待别人打进来(等待客户链接 accept) if __name__ == "__main__": main() 思路:完善代码 命令: esc进入命令模式,大写的I回到光标所在行的行首-(当按下I后同时也就进入了编辑模式) 大A回到光标所在行的行末 注意: listen有一个参数,是一个数值,一般写128,参数越大,以后可以连接的客户端越多,参数越小链接的客户端越少,操作系统不同,参数不同影响不同,linux中128 与256与10差别不是很大,一般写128就可以了 。 accept有一个返回值,返回值是一个元组,如果等号的右边的返回值是一个元组的时候,等号左边有两个变量,叫做拆包,可用ipython3进行测试某个知识点;

Tinyhttp源码分析

半世苍凉 提交于 2019-11-27 04:11:00
简介 Tinyhttp是一个轻量型Http Server,使用C语言开发,全部代码只500多行,还包括一个简单Client。 Tinyhttp程序的逻辑为:一个无线循环,一个请求,创建一个线程,之后线程函数处理每个请求,然后解析HTTP请求,做一些判断,之后判断文件是否可执行,不可执行,打开文件,输出给客户端(浏览器),可执行就创建管道,父子进程进行通信。父子进程通信,用到了dup2和execl函数。 模型图 源码剖析 1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <sys/types.h> 4 #include <netinet/in.h> 5 #include <arpa/inet.h> 6 #include <unistd.h> 7 #include <ctype.h> 8 #include <strings.h> 9 #include <string.h> 10 #include <sys/stat.h> 11 #include <pthread.h> 12 #include <sys/wait.h> 13 #include <stdlib.h> 14 15 #define ISspace(x) isspace((int)(x)) 16 17 #define SERVER_STRING "Server:

【网络编程】

不羁岁月 提交于 2019-11-27 02:49:34
原文: http://106.13.73.98/__/1/ 目录 1.socket层 2.理解socket 3.套接字的发展史 4.网络基础 5.socket基本操作 6.socket进阶 7.黏包 8.解决黏包 8.socket的更多方法 1.socket层 ![在这里插入图片描述](http://106.13.73.98/media/ai/2019-03/5ccf086a-baa7-4268-a9f9-a50fb74136b7.png) 2.理解socket socket是应用层与TCP/IP协议族的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个面膜,它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 3.套接字的发展史 套接字起源于20世纪70年代 加利福尼亚 大学伯克利分校版本的Unix,即人们所说的BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也被称为进程间通讯或IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族:AF_UNIX unix下一切皆文件,基于文件的套接字调用的就是底层的文件系统来获取数据