python中套接字的使用

套接字,TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。

它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

在python中使用socket模块来对套接字进行处理。

(1)套接字超时时间

import socket

# 创建套接字 

#流式套接字(SOCK_STREAM):流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流式套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。

s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 输出默认套接字超时时间
print("before time is :",s.gettimeout())
# 修改套接字超时时间
s.settimeout(10)
print("after time is :",s.gettimeout())

输出结果:

before time is : None
after time is : 10.0

settimeout()函数的参数可以是秒数(非负浮点数)或者None。这个方法在处理阻塞式套接字操作时使用,如果把超时时间设置为None,则禁用了套接字的超时检测。

(2)修改套接字发送和接收的缓冲区大小

import socket
SEND_BUF_SIZE = 4096
RECV_BUF_SIZE = 4096

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

# 查看原来的缓冲区大小
sendbufsize_before = s.getsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF)
recvbufsize_before = s.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF)
print("before send buf size is ",sendbufsize_before)
print("before recv buf size is ",recvbufsize_before)

# 修改缓冲的大小
s.setsockopt(socket.SOL_TCP,socket.TCP_NODELAY,1)
s.setsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF,SEND_BUF_SIZE)
s.setsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF,RECV_BUF_SIZE)

# 查看修改后的缓冲区大小
sendbufsize_after = s.getsockopt(socket.SOL_SOCKET,socket.SO_SNDBUF)
recvbufsize_after = s.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF)
print("before send buf size is ",sendbufsize_after)
print("before recv buf size is ",recvbufsize_after)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值