最近闲暇无事,好多人问即时通讯怎么做的,尤其是对于当下大火的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连接实现即时通讯相关推荐

  1. 计算机网路复习系列:UrlConnection连接和Socket连接的区别

    Socket Socket是底层实现,协议你要自己去写,不局限于http,可以是任何协议. Socket 的连接是有状态的,一旦两边连接上了,将一直保持连接,除非人为断开.一般用于游戏,需要持续的网络 ...

  2. java socket 模拟im 即时通讯

    自己想了一下怎么实现,就写了,没有深究是否合理.更多处理没有写下去,例如收件人不在线,应该保存在数据库,等下一次连接的时候刷新map,再把数据发送过去,图片发送也没有做,也没有用json格式 sock ...

  3. java socket实现简单即时通讯

    [1]socket服务器 /*** @Description 即时消息服务器* @author xiao tang* @version 1.0.0* @createTime 2022年01月23日*/ ...

  4. python创建tcp socket_Python Socket如何建立TCP连接

    在 Python 程序中创建 TCP 服务器时,创建通用 TCP 服务器的一般演示代码如下.需要记住的是,这仅是设计服务器的一种方式.一旦熟悉了服务器设计,可以修改下面的代码来操作服务器. ss = ...

  5. Http和Socket连接区别(ZT)

    1.TCP连接 要想明白Socket连接,先要明白TCP连接.手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上 ...

  6. Http和Socket连接区别

    http://hi.baidu.com/snowqxx/item/f598caf86fcff6ed1b111f45 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望 ...

  7. 作为后端开发人员应该懂的TCP、HTTP、Socket、Socket连接池,一文详解丨Linux后端开发

    前言:作为一名开发人员我们经常会听到HTTP协议.TCP/IP协议.UDP协议.Socket.Socket长连接.Socket连接池等字眼,然而它们之间的关系.区别及原理并不是所有人都能理解清楚,这篇 ...

  8. 微信 短连接 长连接服务器,Socket,http长连接与短连接

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层. 在网络层有IP协议,ICMP协议,ARP协议,RARP协议和BOOTP协议. 在传输层中有:TCP协议与UDP协议. 在 ...

  9. 使用Socket连接穿越CMWAP代理

    使用Socket连接穿越CMWAP代理 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb 版权所有,未经允许严禁转载! 在J2ME网络程序开发过程中,为了节约用户支付的网 ...

最新文章

  1. OpenCV 仿射变换
  2. Spring JDBC-Spring事务管理之数据库事务基础知识
  3. C++中的动态分配内存
  4. 爬虫代理及ssl验证
  5. 我最喜欢的IntelliJ IDEA功能
  6. 【转】Java魔法堂:String.format详解
  7. 计算机语言9月排行榜,TIOBE 9月编程语言排行榜发布,C+增速最快
  8. 【动态规划】P1057 传球游戏
  9. C# 小票打印机 直接打印 无需驱动
  10. OFDM学习笔记(四)(信道估计简介)
  11. Python入门之函数调用
  12. 【音视频—基础】分辨率、码率和帧率
  13. 2021年茶艺师(中级)考试及茶艺师(中级)考试试卷
  14. 2021-2027全球与中国3D产品可视化平台市场现状及未来发展趋势
  15. git 简单命令使用
  16. 现代交换技术学习笔记
  17. 关于风险回归的Cox 模型构建,森林图(1)
  18. 【转】从一个App跳转到另一APP
  19. JPEG图像的解压缩操作
  20. 数据不在有用时进行安全销毁

热门文章

  1. QLibrary Class Reference(qt加载外部库)
  2. 如何访问Wizard控件里的按钮
  3. 基于DEAP库的Python进化算法
  4. C/C++ 实现的websocket客户端
  5. 高速缓存系统之redis c++使用实例
  6. C++类型转换: static_cast const_cast reinterpret_cast dynamic_cast
  7. 基于3G网络的汽车防盗报警系统视频监控设计
  8. 浅谈HASH算法与CSDN密码泄漏事件
  9. 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
  10. 开发app用户协议_兰州移动APP开发用户体验设计不应该做的事