主要是创建一个服务端,在创建服务端的时候,主要步骤如下:

创建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模块详解--小白博客相关推荐

  1. python socket 主动断开_Python网络编程tcp详解(基础篇十四)

    网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...

  2. python中count的作用_python count函数用法详解

    在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...

  3. python count函数代码_python count函数用法详解_后端开发

    fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...

  4. python做插件应用_Python插件机制实现详解

    插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...

  5. python插件使用教程_Python插件机制实现详解

    插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...

  6. python加载机制_Python插件机制实现详解

    插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件.对于Python这样的脚本语言,实现插件机制更简单. 机制 Python的__import__方法可以动态地 ...

  7. python缩进和冒号_Python缩进和冒号详解

    对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空白数量是可变的,但是所有代码块 ...

  8. python数据挖掘商业案例_Python数据科学-技术详解与商业实践-第八讲作业

    作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...

  9. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

最新文章

  1. 在pycharm中无法引入同一目录下的python文件
  2. CMakeLists
  3. 「NLP」 NLP中应用最广泛的特征抽取模型-LSTM
  4. [Java]读取文件方法大全
  5. Android Message解析
  6. Python Socket 编程——聊天室示例程序
  7. 详解.NET中容易混淆的委托与接口
  8. jmeter 取json值_JMeter中JSON数据处理
  9. 【机器视觉】 dev_map_prog算子
  10. 汉字转拼音缩写的函数以及其他函数
  11. Java当中 递归打印文件大小(面向不同的对象打印文件大小)
  12. reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式
  13. Web Page Request Principle
  14. nginx 多个root_dockerfile定制自己的nginx
  15. Hive--sql中的explode()函数和posexplode()函数
  16. java实现屏幕截图
  17. Computer Vision: Algorithms and Applications阅读笔记
  18. Linux安装必须建立的三个分区
  19. [精华] RDMA技术原理分析、主流实现对比和解析
  20. 飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率

热门文章

  1. matlab绘制球面点,我需要在MATLAB的笛卡尔坐标中绘制球面方程的帮助
  2. Android Note-android studio 无法创建android项目
  3. 从零开始学keras之kaggle猫狗识别分类器
  4. android 关闭软键盘_实现边到边的体验 | 让您的软键盘动起来 (一)
  5. mongodb运算操作符
  6. python抽奖程序_Python编写抽奖式随机提问程序
  7. java 内部类 作用_java内部类的作用分析
  8. HTML基础知识点(1)
  9. mysql innodb_file_per_table=1_mysql-5.7 innodb_file_per_table 详解
  10. apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了