很多情况下,默认的套接字缓冲区大小可能不够用。此时,可以将默认的套接字缓冲区大小改成一个更合适的值。

1. 代码

# ! /usr/bin/env python

# -*- coding: utf-8 -*-

import socket

# 设置发送缓冲域大小

SEND_BUF_SIZE = 4096

# 设置接收缓冲域大小

RECV_BUF_SIZE = 4096

def modify_buff_size():

# 创建TCP socket

# UDP socket —— s=socket.socket(socket.AF_INET,SOCK_DGRAM)

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取当前套接字关联的选项

# socket.SOL_SOCKET —— 正在使用的socket选项

# socket.SO_SNDBUF —— 发送缓冲区大小

bsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)

#打印更改前的发送缓冲区大小

print("Buffer size [Before]: %d" % bsize)

# 设置TCP套接字关联的选项

# socket.TCP_NODELAY TCP层套接口选项

# 1 —— 表示将TCP_NODELAY标记为TRUE

sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)

# 设置发送缓冲域套接字关联的选项

sock.setsockopt(

socket.SOL_SOCKET,

socket.SO_SNDBUF,

SEND_BUF_SIZE)

# 设置接收缓冲域套接字关联的选项

sock.setsockopt(

socket.SOL_SOCKET,

socket.SO_RCVBUF,

RECV_BUF_SIZE)

# 获取设置后的发送缓冲域

bsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)

print("Buffer size [After] : %d" % bsize)

if __name__ == '__main__':

modify_buff_size()

2.setsockopt()和getsockopt()

def setsockopt(self, level, option, value): # real signature unknown; restored from __doc__

"""

setsockopt(level, option, value)

Set a socket option. See the Unix manual for level and option.

The value argument can either be an integer or a string.

"""

pass

def getsockopt(self, level, option, buffersize=None): # real signature unknown; restored from __doc__

"""

getsockopt(level, option[, buffersize]) -> value

Get a socket option. See the Unix manual for level and option.

If a nonzero buffersize argument is given, the return value is a

string of that length; otherwise it is an integer.

"""

pass

后续添加解释

3.AF_INET和SOCK_STREAM解释

socket.AF_INET —— 服务器之间网络通信

socket.SOCK_STREAM提供有序的、可靠的、双向的和基于连接的字节流,使用带外数据传送机制,为Internet地址族使用TCP。

SOCK_STREAM类型的套接口为全双向的字节流。对于流类套接口,在接收或发送数据前必需处于已连接状 态。用connect()调用建立与另一套接口的连接,连接成功后,即可用send()和recv()传送数据。当会话结束后,调用closesocket()。带外数据根据规定用send()和recv()来接收。

4.运行结果

Buffer size [Before]: 65536

Buffer size [After] : 4096

Python网络编程——处理套接字错误

在网络应用中,经常会遇到这种情况:一方尝试连接,但另一方由于网络媒介失效或者其他原因无法响应. Python的Socket库提供了一个方法,能通过socket.error异常优雅地处理套接字错误. 1 ...

python网络编程-socket套接字通信循环-粘包问题-struct模块-02

前置知识 不同计算机程序之间数据的传输 应用程序中的数据都是从程序所在计算机内存中读取的. 内存中的数据是从硬盘读取或者网络传输过来的 不同计算机程序数据传输需要经过七层协议物理连接介质才能到达目标程 ...

UNIX网络编程——原始套接字(dos攻击)

原始套接字(SOCK_RAW).应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能. 注意原始套接字只能够由有 root权限的人创建. 可以参考前面的博客<

UNIX网络编程——原始套接字的魔力【续】

如何从链路层直接发送数据帧 上一篇里面提到的是从链路层"收发"数据,该篇是从链路层发送数据帧. 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑 ...

TCP&sol;IP网络编程之套接字类型与协议设置

套接字与协议 如果相隔很远的两人要进行通话,必须先决定对话方式.如果一方使用电话,另一方也必须使用电话,而不是书信.可以说,电话就是两人对话的协议.协议是对话中使用的通信规则,扩展到计算机领域可整理为 ...

TCP&sol;IP网络编程之网络编程和套接字

网络编程和套接字 网络编程又称为套接字编程,就是编写一段程序,使得两台连网的计算机彼此之间可以交换数据.那么,这两台计算机用什么传输数据呢?首先,需要物理连接,将一台台独立的计算机通过物理线路连接在一 ...

Linux网络编程——原始套接字实例:MAC 头部报文分析

通过得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢? 链路层封包格式 M ...

【TCP&sol;IP网络编程】:01理解网络编程和套接字

1.网络编程和套接字 网络编程与C语言中的printf函数和scanf函数以及文件的输入输出类似,本质上也是一种基于I/O的编程方法.之所以这么说,是因为网络编程大多是基于套接字(socket,网络数 ...

UNIX网络编程——原始套接字SOCK&lowbar;RAW

实际上,我们常用的网络编程都是在应用层的报文的收发操作,也就是大多数程序员接触到的流式套接字(SOCK_STREAM)和数据包式套接字(SOCK_DGRAM).而这些数据包都是由系统提供的协议栈实现, ...

随机推荐

&period;NET程序员走向高端必读书单汇总

.NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. ...

NodeJS的安装

1. 进入官网下载对应版本的nodejs(我选择的是32位的window7版本x86) 2. 默认路径可修改   3. install就可以安装在cmd中输入path查看路径(我的是E:\compan ...

poj -2229 Sumsets (dp)

http://poj.org/problem?id=2229 题意很简单就是给你一个数n,然后选2的整数幂之和去组成这个数.问你不同方案数之和是多少? n很大,所以输出后9位即可. dp[i] 表示组 ...

SGU 280&period;Trade centers(贪心)

SGU 280.Trade centers 解题报告 题意: n(<=30000)个城市,(n-1)条道路,求最少需要选择多少个城市建造市场,使得所有城市到任意一个市场的距离不大于k. Solu ...

使用 Async 和 Await 的异步编程 &num;Reprinted&num;

异步方法容易编写 string urlContents = await client.GetStringAsync(); 以下特征总结了使上面一个异步方法. 方法签名包含一个 Async 或async ...

C语言结构体变量内存分配与地址对齐

地址对齐简单来说就是为了提高访问内存的速度. 数组的地址分配比较简单,由于数据类型相同,地址对齐是一件自然而然的事情. 结构体由于存在不同基本数据类型的组合,所以地址对齐存在不同情况,但总体来说有以下 ...

Android如何实现定位获取

一:GPS定位: (1).要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限: uses-permission android:name= android.permissi ...

npm ERR&excl; Unexpected end of JSON input while parsing near&period;&period;&period;错误

问题解决方案在GitHub中: https://github.com/vuejs-templates/webpack/issues/990 总结一下:1.删除package-lock.json 2.进 ...

Spring&colon; 读取 &period;properties 文件地址&comma;json转java对象&comma;el使用java类方法相关 &lpar;十三&rpar;

1. 在Java中获取 .properties 文件的路径 (src/main/resources 下) ProjectName |---src/main/java |---src/main/reso ...

CentOS升级Python2&period;6到Python2&period;7并安装pip

原文:http://ruter.sundaystart.net/2015/12/03/Update-python/ 貌似CentOS 6.X系统默认安装的Python都是2.6版本的?平时使用以及很多 ...

python socket清空接收缓冲区_Python网络编程——修改套接字发送和接收的缓冲区大小...相关推荐

  1. python中http协议编程_python网络编程、套接字、HTTP协议

    网络编程 网络目的 : 数据的传输 网络数据传输是一个复杂的过程 OSI 七层模型 --> 网络通信标准化流程 应用层 : 提供用户服务,具体内容由特定程序规定 表示层 : 数据的压缩优化 会话 ...

  2. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  3. Linux网络编程——原始套接字编程

    Linux网络编程--原始套接字编程 转自:http://blog.csdn.net/tennysonsky/article/details/44676377 原始套接字编程和之前的 UDP 编程差不 ...

  4. TCP/IP网络编程:P1->理解网络编程和套接字

    本系列文章为<TCP/IP网络编程----尹圣雨>学习笔记 文章目录 一.理解网络编程和套接字 1.1 构建接电话套接字 1.2 编写"Hello world!"服务器 ...

  5. C# 网络编程之套接字编程基础知识

    最近阅读了周存杰编写的<C#网络编程实例教程>并阅读了很多相关方面的资料,同时自己也做了一些套接字编程方面的C#程序,所以根据它的知识总结了最近的套接字编程的一些知识点,方便自己的理解与他 ...

  6. Linux网络编程之套接字基础

    Linux网络编程之套接字基础 1.套接字的基本结构 struct sockaddr 这个结构用来存储套接字地址. 数据定义: struct sockaddr { unsigned short sa_ ...

  7. 01.理解网络编程和套接字

    理解网络编程和套接字 理解网络编程和套接字 网络编程和套接字概要 网络编程就是编写程序使两台连网的计算机相互交换数据.这就是全部内容了吗?是的!网络编程要比想象中简单许多. 那么,这两台计算机之间用什 ...

  8. TCP/IP网络编程——理解网络编程和套接字编程

    完整版文章请参考: TCP/IP网络编程完整版文章 文章目录 一.理解网络编程和套接字编程 1.1 socket套接字 1.1.1 一个例子来表示TCP的网络连接 1.1.2 程序实现 1.2 文件操 ...

  9. Linux原始网络编程,Linux操作系统网络编程 原始套接字 (1)

    Linux操作系统网络编程--原始套接字 (1) http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml 我们在前面已经学习过了网络 ...

最新文章

  1. iOS progressive Web App (PWA) 技术
  2. 西南民族大学计算机基础技能应用培训基地,计科学院第九期Office应用培训开班典礼顺利举办...
  3. C语言实验——打印数字图形(JAVA)
  4. Bootstrap 表格
  5. MvcScaffold快速开发实例
  6. scala能进入交互模式但是无法执行本地文件、长时间卡住的问题
  7. Kendo UI grid 表格数据更新
  8. 朝鲜黑掉韩国政府版 Word
  9. 项目:智能语音对话机器人
  10. 烽火软件测试的笔试难不难,烽火科技笔试经验
  11. 基于近似计算的同态加密方案CKKS17----实现库介绍
  12. python爬取58同城租房信息_分页爬取58同城租房信息.py
  13. 怎么开启MIUI8系统的ROOT超级权限
  14. Cadence Allegro PCB设计88问解析(二) 之 Allegro中Artwork层复用(导入导出)
  15. 物流服务--查询物流
  16. 【目前点赞排名】投票倒计时五天:继续为你喜欢的征文作品投票吧!
  17. 马尔代夫为世界十大热恋天堂之一
  18. 赛扬处理器_J4015处理器!品铂新款X10上市!_IT业界行情
  19. VMware虚拟机克隆后解决网络冲突问题
  20. android设备什么手机号码,安卓手机如何查看本机号码 查看本机号码的方法有哪些...

热门文章

  1. Too Files - 免费无限空间网络硬盘
  2. 国家级发明专利专利 - 崔博文
  3. 华三imc服务器型号,华三imcportal服务器常见错误分析报告.doc
  4. 微信内置浏览器调试和调试微信内的H5页面汇总(持续更新...)
  5. 请教各位仁兄 ,如何给delphi7增加gdi+的功能?
  6. java实现远程控制
  7. buflab-计算机系统实验
  8. 做跨境电商一年买了房:未来五年的风口行业,90%的人都不知道
  9. Power Apps从入门到放弃教程
  10. 用计算机写文章 单元备课,备课写教案