python3中的socket
socket是什么?用它做什么?
socket,我们通俗的称之为套接字, 是进程间通信的一种方式,但是他与其他进程通信的一个主要区别是 他能实现不同主机间的通信,比如我们现在用的浏览器,在比如我们使用的微信,米聊,还有大家最熟悉 最喜欢用的陌陌,探探,约吧?此处省略n个交友软件.你懂得.
创建socket
# 首先需要导入
import socket
# 创建套接字
s = socket.socket(prarm1, param2)
# param1 : 可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进行通信), 一般我们都用AF_INET.
# param2 : 套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议),或者SOCK_DGRAM(数据报套接字,用于UDP协议)
小说明
其实套接字使用流程和文件使用流程非常像, 创建套接字(打开文件),使用套接字收/发数据(操作文件),关闭套接字(关闭文件). 建议大家刚开始创建完套接字立马写关闭,然后在折回来写业务代码,以免出现遗漏关闭
套接字应用
套接字的应用其实很简单,写个简单的小demo,帮助大家理解
# 导入socket模块
import socket
# 创建一个socket , 第一个参数为类型, 第二个参数为套接字类型 ,
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # udp套接字 创建完套接字要立马进行关闭,然后在中间写功能,养成习惯
# 目标ip地址和端口
dest_attr = ('192.168.23.22', 8080)
# 要发送的数据
send_data = input("请输入要发送的数据:")
# 发送数据到指定的ip上
s.sendto(send_data.encode('utf-8'), dest_attr)
# 等待接收对方返回数据
recv_data = s.recvfrom(1024) # 表示最大接收的字节数,此时recv_data 是一个元祖,第一个元素是对方发送的数据,第二个元素是对方的ip和端口
print(recv_data[0].decode())
print(recv_data[1])
# 关闭套接字
s.close()
小工具调试
推荐大家使用一个小工具: 网络调试助手.


在本机ip设置好本机ip地址和端口 然后在目标ip设置好用于服务的ip和端口 这样就可以实现简单的通讯了. (我们一般会对服务机做端口绑定,实现固定端口)
试想如果我们不对端口进行绑定的话,比如腾讯的服务器 你每天登陆QQ是不是得先向腾讯打电话咨询服务端口是什么,显然是行不通的.
下载链接: 点击直达
绑定信息
一般情况下,在一台电脑上运行的网络程序有很多,为了不与其他的网络程序占用同一个端口号,往往在编程中,udp的端口号一般不绑定,但是如果要做成一个服务端的话,肯定而且必须是要绑定的,举个栗子.我们生活中常用的110,120,119这些便民服务号,是不是也是一种绑定呢?
# 绑定其实很简单.
local_addr = ('', port) # 两个参数代表ip地址和要绑定的端口号,注意是元祖的格式. 我们必须绑定本机ip 所以可以省略不写 也可以写本机ip,但是不允许绑定非本机ip
# 此处的s 对应你创建出来的套接字
# 执行绑定
s.bind(local_addr)
# 执行绑定二
s.bind(('', port))
绑定过后我们在运行网络调试工具 ,发现每次的端口号都是固定的了.我们每次做数据回复的时候就不用再修改端口了.


总结
- 一个udp网络程序,可以不绑定,此时操作系统会随机分配一个端口,如果重新运行代码,此端口有极大可能发生变化
- 一个udp网络程序,也可以绑定信息,(端口),如果绑定成功,操作系统就会使用这个端口来进行区别收到的网络数据是不是此进程的,实现数据精准分发.
python3中的socket的更多相关文章
- python3中socket套接字的编码问题解决
一.TCP 1.tcp服务器创建 #创建服务器 from socket import * from time import ctime #导入ctime HOST = '' #任意主机 PORT = ...
- 详解:Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests
在python2中,urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: 1.urllib2可以接受一个Request类的实例来设置URL请求的hea ...
- 常见的爬虫分析库(1)-Python3中Urllib库基本使用
原文来自:https://www.cnblogs.com/0bug/p/8893677.html 什么是Urllib? Python内置的HTTP请求库 urllib.request ...
- Python3中Urllib库基本使用
什么是Urllib? Python内置的HTTP请求库 urllib.request 请求模块 urllib.error 异常处理模块 urllib.par ...
- python3 进程间通信之socket.socketpair()
python3 进程间通信之socket.socketpair() socket.socketpair()是什么鬼东西? socket.socketpair()函数仅返回两个已经连接的套接字对象,参数 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
- EBS中利用Socket与外系统通信
某银行要求做一个签到签退功能,日终EBS系统发送报文与核心系统对帐,规定利用Socket来做传送,记录下步骤: 1.编辑: $INST_TOP/ora/10.1.3/j2ee/oacore/appli ...
- Python3中使用PyMySQL连接Mysql
Python3中使用PyMySQL连接Mysql 在Python2中连接Mysql数据库用的是MySQLdb,在Python3中连接Mysql数据库用的是PyMySQL,因为MySQLdb不支持Pyt ...
随机推荐
- spark读写hbase性能对比
一.spark写入hbase hbase client以put方式封装数据,并支持逐条或批量插入.spark中内置saveAsHadoopDataset和saveAsNewAPIHadoopDatas ...
- js 设备判断(移动端pc端 安卓ios 微信)
苹果安卓判断 $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.in ...
- Python距离放弃又近了Day02
今天,来时大概复习了上一天讲过的一些计算机基础和简单数据类型和if语句,第二天就来了循环,还是个while的死循环,突然想到还是电脑好,不管循环多少次,只要电脑不崩溃,就能一直精准的算下去,这就和人不 ...
- Java 8 新特性:6-Optional类
(原) 先看看上面的说明: /** * A container object which may or may not contain a non-null value. * If a value i ...
- 013_实践HTTP206状态:部分内容和范围请求
HTTP 2xx范围内的状态码表明了:"客户端发送的请求已经被服务器接受并且被成功处理了".HTTP/1.1 200 OK是HTTP请求成功后的标准响应,当你在浏览器中打开www. ...
- np.mgrid的用法
功能:返回多维结构,常见的如2D图形,3D图形 np.mgrid[ 第1维,第2维 ,第3维 , …] 第n维的书写形式为: a:b:c c表示步长,为实数表示间隔:该为长度为[a,b),左开右闭 或 ...
- nginx上配置phpmyadmin
Nginx配置phpmyadmin流程如下: 一.准备软件和环境(这里我以ubuntu16.04为例) 1.安装php7.1 sudo LC_ALL=C.UTF- add-apt-repository ...
- 使用serialize时多数据传递
class CartList(APIView): #定义编辑方法 def post(self,request): username = request.POST.get('username') # p ...
- JS正则四个反斜杠的含义
我们首先来看如下代码,在浏览器中输出的是什么? // 在浏览器中输出的 console.log('\\'); // 输出 \ console.log('\\\\'); // 输出 \\ 一:js正则直 ...
- 1.[Andriod]之Andriod布局 VS WinPhone布局
0.写在前面的话 近来被HTML+CSS的布局折腾的死去活来,眼巴巴的看着CSS3中的flex,grid等更便捷更高效的的布局方式无法在项目中应用,心里那叫一个窝火啊,去你妹的兼容性,,, 最近体验下 ...