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 ...
随机推荐
- [经验总结] 从其它sheet页引用数据生成图表时没有图例的解决办法
1.先给出一个在有数据区域的sheet页中生成的图表,比较全,图表和图例全部都有,如下图: 2.但是如果在其它 sheet页中引用该有数据的sheet数据时并生成图表,生成的图表只有图表区域显示,图例 ...
- 研究好vif 和vshow
另外从源头上处理的???,怎么自己排查出错误??必须 ??https://www.jb51.net/article/124116.htm
- C. Songs Compression(简单贪心)
水题 #include<iostream> #include<algorithm> using namespace std; #define LL long long ; st ...
- 001_JavaScript数组常用方法总结及使用案例
一. https://msdn.microsoft.com/zh-cn/library/ff679976(v=vs.94).aspx 二.ip地址转换成对应的二进制. const ip='172.16 ...
- Jetson TX2(2)ubutu1604--安装opencv3.4.0
1安装OpenCV3.4.0+contrib 1 在终端中敲入以下两句sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock su ...
- spring boot 2.0 WebMvcConfigurerAdapter过时解决方法
第一种: @Configuration public class WebAppConfig implements WebMvcConfigurer{ @Bean public HandlerInter ...
- Windows安装Git
一.安装Git for Windows(又名msysgit) 下载地址: https://git-for-windows.github.io/ 在官方下载完后,安装到Windows Explore ...
- 深入理解 Java 基本数据类型
深入理解 Java 基本数据类型
- NIO原理及案例使用
什么是NIO Java提供了一个叫作NIO(New I/O)的第二个I/O系统,NIO提供了与标准I/O API不同的I/O处理方式.它是Java用来替代传统I/O API(自Java 1.4以来). ...
- 通过JS获取URL链接带的参数
1 /** 2 * 获取URL参数的方法 3 */ 4 $.extend({ //以便于通过$引用该方法 5 getUrlVars : function() { //获取多个参数数组 6 var va ...