python socket模块作用_python之socket模块详解--小白博客
主要是创建一个服务端,在创建服务端的时候,主要步骤如下:
创建socket对象socket——》绑定IP地址和端口bind——》监听listen——》得到请求accept——》接收请求recv——》发送信息send——》关闭close
客户端代码就是连接服务器,接收和发送消息,具体流程如下:
创建socket对象socket——》connet连接服务器——》获取消息recv——》发送消息send——关闭close
1、服务端代码
#服务器端
import socket
import subprocess
import threading
server = socket.socket()
server.bind(('', 8888))
server.listen(5)
print('等待电话.....')
conn, addr = server.accept()
print('电话来了......')
def recv():
while True:
data = conn.recv(10240)
print(data.decode('utf-8'))
def send():
while True:
data = input('===>:')
conn.send(data.encode('utf-8'))
t1 = threading.Thread(target=recv)
t2 = threading.Thread(target=send)
t1.start()
t2.start()
2、客户端代码
#客户端
import socket
import threading
client = socket.socket()
client.connect(('localhost', 8888))
def send():
while True:
info = input('===>:')
client.send(info.encode('utf-8'))
def recv():
while True:
data = client.recv(1024)
print(data.decode('utf-8'))
t1 = threading.Thread(target=send)
t2 = threading.Thread(target=recv)
t1.start()
t2.start()
3、 基本描述
在使用socket模块的时候,创建对象一般是使用如下的代码:
s = socket.socket()
在使用默认值的时候,表示创建的是TCP 的socket,地址家族表示为socket.AF_INET,socket类型默认值为socket.SOCK_STREAM表示为TCP的,而UDP的为socket.SOCK_DGRAM,表示为数据包
绑定的代码如下:
s.bind((IP,port))
注意在绑定的时候,参数只有一个表示为元组tuple,其中第一个元素为ip地址或者是hostname,第二个参数为port端口号,也就是开始监听哪个IP地址的哪个端口
监听的代码如下:
s.listen(5)
其中的参数为整数,5表示阻塞五个连接,实际上,,经过测试,十几个都没问题,主要是阻塞式的,当有一个连接上的时候,那么其他的都不会连接上,只有在第一个推出的时候,其他的才能进行连接,开始还以为是可以同时连接五个,然后测试下,发现不行,无论是同一个服务器上还是不同的机器上,是不能同时进行连接的,也就是所谓的阻塞式。
被动接受请求的代码如下:
conn,addres = s.accept()
返回的是一个元组,也就是在接受客户端的连接,返回的第一个元素是一个socket对象,可以认为是客户端的socket对象,address表示为客户端的地址,其实这个也就使用和客户端进行通信的。
客户端连接服务器端的代码如下:
s.connect((ip,port))
参数为服务器的IP地址和服务器监听的端口。
发送消息的代码如下:
conn.send('string is send')
conn.sendall('send')
l两个都是用来发送消息的,区别就是sendall尽量一次发送,而send的话主要看接收能力,如果超出范围的话,那么会进行发送两次进行发送
接收消息的代码如下:
conn.recv(1024)
主要方法是recv方法表示接收消息,最多接收的字节数为1024,那么多余的字符将会在下次接收的过程中进行接收。
4、运行客服端和服务端
在运行客户端和服务端代码之后,发现是可以交互的,也就是客户端和服务端进行说话,就想其他的一些交流软件一样,注意,在上述的代码中还存在一些bug
python socket模块作用_python之socket模块详解--小白博客相关推荐
- python socket 主动断开_Python网络编程tcp详解(基础篇十四)
网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...
- python中count的作用_python count函数用法详解
在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...
- python count函数代码_python count函数用法详解_后端开发
fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...
- python做插件应用_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python插件使用教程_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python加载机制_Python插件机制实现详解
插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...
- python缩进和冒号_Python缩进和冒号详解
对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空白数量是可变的,但是所有代码块 ...
- python数据挖掘商业案例_Python数据科学-技术详解与商业实践-第八讲作业
作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...
- python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...
本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...
最新文章
- 在pycharm中无法引入同一目录下的python文件
- CMakeLists
- 「NLP」 NLP中应用最广泛的特征抽取模型-LSTM
- [Java]读取文件方法大全
- Android Message解析
- Python Socket 编程——聊天室示例程序
- 详解.NET中容易混淆的委托与接口
- jmeter 取json值_JMeter中JSON数据处理
- 【机器视觉】 dev_map_prog算子
- 汉字转拼音缩写的函数以及其他函数
- Java当中 递归打印文件大小(面向不同的对象打印文件大小)
- reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式
- Web Page Request Principle
- nginx 多个root_dockerfile定制自己的nginx
- Hive--sql中的explode()函数和posexplode()函数
- java实现屏幕截图
- Computer Vision: Algorithms and Applications阅读笔记
- Linux安装必须建立的三个分区
- [精华] RDMA技术原理分析、主流实现对比和解析
- 飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率
热门文章
- matlab绘制球面点,我需要在MATLAB的笛卡尔坐标中绘制球面方程的帮助
- Android Note-android studio 无法创建android项目
- 从零开始学keras之kaggle猫狗识别分类器
- android 关闭软键盘_实现边到边的体验 | 让您的软键盘动起来 (一)
- mongodb运算操作符
- python抽奖程序_Python编写抽奖式随机提问程序
- java 内部类 作用_java内部类的作用分析
- HTML基础知识点(1)
- mysql innodb_file_per_table=1_mysql-5.7 innodb_file_per_table 详解
- apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了