python怎么连接socket_python socket连接实现即时通讯
最近闲暇无事,好多人问即时通讯怎么做的,尤其是对于当下大火的python更是如此,大多数人都知道一个xmpp或者xampp框架,于是开了简书,大致说明一下
不明白tcp/udp协议底层原理的,自行百度,这里就不再赘述。
在python中,要想实现即时通讯,需要明白socket协议的两个概念,socket.AF_INET和socket_STREAM,前者是通讯的IP协议模式,代表IPv4,IPv4跟IPv6的区别在于,IPv4是32位整数位经过8字节划分之后的取值,预想结果192.xx.xx.xx ,而IPv6是128位整数位划分之后的取值,预想结果xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx ,v4的长度是有限制的,20个字节,而v6理论上是没有限制的,这就是为什么大公司一般用v6而小公司用v4的原因。
后者socket_STREAM,见名知意,就是流的意思,这是一种服务端发送接收数据的数据形式,即字节(byte),在c/s交互的过程中,获取到数据的流,进行decode或者encode编码输出即可,编码格式大部分遵循utf-8,也有遵循gbk的,不再多说。
步骤:
1、创建客户端py文件,连接服务端IP地址即服务器地址,如连接成功,发送数据并进行对应编码;
2、创建服务端py文件,绑定域名,服务器挂起也就是等待连接,一旦接受到客户端发送的数据,服务器自动进行处理;
核心代码:
服务端(server.py):
import socket
#创建服务
server= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定IP、端口 这里我写的是本机的IP,只要是服务启动、端口对应就可以
server.bind(('192.168.1.112',8081))
#服务器监听
server.listen(10)
print('socket连接成功')
#等待连接 服务器挂起状态,等待客户端唤起
clientSocket,clirentAddress= server.accept()
# server.close() 因为是长连接,close操作根据你项目的具体场景而定
#这里写一个死循环,执行下一步操作
while True:
#接收的数据 来自客户端
data= clientSocket.recv(1024)#这里填写1024即可,就是一kb,最大值
print('客户端:',data.decode('utf-8'))
if data:
backData= input('请回复客户端:')
clientSocket.send(backData.encode('utf-8'))
客户端(client.py):
import socket #导入包
client= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(('192.168.1.112',8081)) #IP地址跟端口号必须跟服务器一致
#循环执行操作
while True:
data= input('你对服务器说:') #传输数据
client.send(data.encode('utf-8')) #编码解析数据
info= client.recv(1024) #数据接收 (客户端接收来自服务器的)
print('服务器说:',info.decode('utf-8'))
这种写法只能是点对点发送信息,如果是点对多,需要循环执行对接的客户端,时间原因,不再敲代码。
python怎么连接socket_python socket连接实现即时通讯相关推荐
- 计算机网路复习系列:UrlConnection连接和Socket连接的区别
Socket Socket是底层实现,协议你要自己去写,不局限于http,可以是任何协议. Socket 的连接是有状态的,一旦两边连接上了,将一直保持连接,除非人为断开.一般用于游戏,需要持续的网络 ...
- java socket 模拟im 即时通讯
自己想了一下怎么实现,就写了,没有深究是否合理.更多处理没有写下去,例如收件人不在线,应该保存在数据库,等下一次连接的时候刷新map,再把数据发送过去,图片发送也没有做,也没有用json格式 sock ...
- java socket实现简单即时通讯
[1]socket服务器 /*** @Description 即时消息服务器* @author xiao tang* @version 1.0.0* @createTime 2022年01月23日*/ ...
- python创建tcp socket_Python Socket如何建立TCP连接
在 Python 程序中创建 TCP 服务器时,创建通用 TCP 服务器的一般演示代码如下.需要记住的是,这仅是设计服务器的一种方式.一旦熟悉了服务器设计,可以修改下面的代码来操作服务器. ss = ...
- Http和Socket连接区别(ZT)
1.TCP连接 要想明白Socket连接,先要明白TCP连接.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上 ...
- Http和Socket连接区别
http://hi.baidu.com/snowqxx/item/f598caf86fcff6ed1b111f45 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望 ...
- 作为后端开发人员应该懂的TCP、HTTP、Socket、Socket连接池,一文详解丨Linux后端开发
前言:作为一名开发人员我们经常会听到HTTP协议.TCP/IP协议.UDP协议.Socket.Socket长连接.Socket连接池等字眼,然而它们之间的关系.区别及原理并不是所有人都能理解清楚,这篇 ...
- 微信 短连接 长连接服务器,Socket,http长连接与短连接
TCP/IP TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层. 在网络层有IP协议,ICMP协议,ARP协议,RARP协议和BOOTP协议. 在传输层中有:TCP协议与UDP协议. 在 ...
- 使用Socket连接穿越CMWAP代理
使用Socket连接穿越CMWAP代理 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 版权所有,未经允许严禁转载! 在J2ME网络程序开发过程中,为了节约用户支付的网 ...
最新文章
- OpenCV 仿射变换
- Spring JDBC-Spring事务管理之数据库事务基础知识
- C++中的动态分配内存
- 爬虫代理及ssl验证
- 我最喜欢的IntelliJ IDEA功能
- 【转】Java魔法堂:String.format详解
- 计算机语言9月排行榜,TIOBE 9月编程语言排行榜发布,C+增速最快
- 【动态规划】P1057 传球游戏
- C# 小票打印机 直接打印 无需驱动
- OFDM学习笔记(四)(信道估计简介)
- Python入门之函数调用
- 【音视频—基础】分辨率、码率和帧率
- 2021年茶艺师(中级)考试及茶艺师(中级)考试试卷
- 2021-2027全球与中国3D产品可视化平台市场现状及未来发展趋势
- git 简单命令使用
- 现代交换技术学习笔记
- 关于风险回归的Cox 模型构建,森林图(1)
- 【转】从一个App跳转到另一APP
- JPEG图像的解压缩操作
- 数据不在有用时进行安全销毁
热门文章
- QLibrary Class Reference(qt加载外部库)
- 如何访问Wizard控件里的按钮
- 基于DEAP库的Python进化算法
- C/C++ 实现的websocket客户端
- 高速缓存系统之redis c++使用实例
- C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
- 基于3G网络的汽车防盗报警系统视频监控设计
- 浅谈HASH算法与CSDN密码泄漏事件
- 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
- 开发app用户协议_兰州移动APP开发用户体验设计不应该做的事