编写myqq即时聊天脚本,实现相互通信

主要涉及socket通信,tcp协议

与udp相比,tcp有一些不同。对比见程序中的注释。

udp链接 https://mp.csdn.net/postedit/83316495

注意:执行时要先运行server端,这也是跟udp的不同之一。

# TCP-Server

import socket

# 1. 创建 socket 对象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 将 socket 绑定到指定地址

#127.0.0.1这儿可以为空,表示可以接受任意主机的请求。

#127.0.0.1表示本机

address = ('127.0.0.1', 10140)

s.bind(address)

# 3. 接收连接请求
 
        #udp没有
 
 #主要作用:修改服务器端的socket状态为监听状态(不会产生阻塞)
 
s.listen(5)

# 4. 等待客户请求一个连接(实现三次握手,会产生阻塞)
 
 #与udp最主要的区别,udp没有这一步建立连接的过程

# 调用 accept 方法时,socket 会进入 "waiting" 状态。

# accept方法返回一个含有两个元素的元组 (connection, address)。

# 第一个元素 connection 是新的 socket 对象,服务器必须通过它与客户通信;

# 第二个元素 address 是客户的 Internet 地址。

ss, addr = s.accept()

print( 'got connect from', addr)

# 5. 处理:服务器和客户端通过 send 和 recv 方法通信

# send 方法返回已发送的字节个数。

# 调用 recv 时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。

# recv方法在接收数据时会进入 "blocked" 状态,最后返回一个字符 串,用它表示收到的数据。

# 如果发送的数据量超过了recv 所允许的,数据会被截短。

# 多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区删除。

while True:

ra = ss.recv(1024)

print( 'client:', ra.decode("utf-8"))

message = input(">")

if not message:

break

ss.send((message.encode("utf-8")))

# 6. 传输结束,关闭连接

ss.close()

s.close()

#TCP-Client

import socket

#HOST=127.0.0.1

#PORT=10149

address = ('127.0.0.1',10140)

#socket第一个参数对应网络层,代表ip协议
#第二个代表传输层协议,STREAM代表tcp,DGRAM代表udp

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#使用udp时。-----------------------------区别一!!!!!

#s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#区别二!!!udp不需要连接

s.connect(address)

while True:

message = input(">")

if not message:

break

#s.send(bytes(message,'utf-8'))

#区别三!!!!udp是sendto

s.send((message.encode()))

#区别四!!!udp是recvfrom,

#sendto和recvfrom的区别主要原因时udp每次发送都需要建立连接,

#而tcp已经使用connect已经建立好连接了,不需要每次都重新建立连接,直接收发数据就可以了

data = s.recv(1024)

print( 'server:',data.decode())

#print( 'server:',data.decode("gbk"))

s.close()

编写myqq即时聊天脚本,实现相互通信(tcp协议)相关推荐

  1. 聊天室 1.0 (TCP协议)客户端

    /****************************聊天的头文件*************************/ #ifndef HEAD_H_ #define HEAD_H_#includ ...

  2. Socket通信(TCP协议)

    创建服务器: ①:创建一个用于监听连接的Socket对象: ②:用指定的端口号和服务器的Ip建立一个EndPoint对象: ③:用Socket对象的Bind()方法绑定EndPoint: ④:用Soc ...

  3. 中油即时通信电脑版_一文看懂云视频会议与即时聊天软件的差别

    进入互联网时代,便捷.高效的云视频会议受到中小企业的青睐,人们通过租赁云视频会议账号,即可在视频会议室.个人电脑.智能手机上发起远程视频会议.不过随着5G等通信网络的普及,人们基于即时聊天软件进行视频 ...

  4. 即时聊天工具混战中国

    近闻微软MSN已经正式结盟中国内移动IM(移动即时通信)工具的领先企业PICA(皮咔),双方将在移动IM的技术研发和市场等领域展开深度合作.和我早期的一段时间分析的中国移动的飞信境况一样,即时聊天工具 ...

  5. 实战即时聊天,一文说明白:聊天服务器+聊天客户端+Web管理控制台。

    目录 一.前言 二.最终效果 1.聊天服务器 2.聊天客户端 3.Web管理控制台 三.需求分析 四.概要设计 1.技术选型 1)聊天服务端 2)Web管理控制台 3)聊天客户端 4)SpringBo ...

  6. Java实现即时聊天:聊天服务器+聊天客户端+Web管理控制台

    来源:cnblogs.com/blogtimes/p/14767484.html 一.前言 说实话,写这个玩意儿是我上周刚刚产生的想法,本想写完后把代码挂上来赚点积分也不错.写完后发现这东西值得写一篇 ...

  7. Android使用XMPP框架实现即时聊天(IM)功能(Openfire + Smack)

    目录 概述 前期准备 客户端使用Smack 权限配置.压缩包导入等 客户端连接到服务器 用户注册/登录功能 离线消息接收 接收/发送消息 后记 概述 即时聊天功能是许多APP的刚需.QQ.微信等用的都 ...

  8. 协议森林08 不放弃 (TCP协议与流通信)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. TCP(Transportation Control Protocol)协议与IP协议是一同产生的 ...

  9. tcp协议接收方对out of order的分段是如何处理的?_TCP协议与流通信

    TCP(Transportation Control Protocol)协议与IP协议是一同产生的.事实上,两者最初是一个协议,后来才被分拆成网络层的IP和传输层的TCP.我们已经在UDP协议中介绍过 ...

  10. golang从简单的即时聊天来看架构演变

    前言 俗话说的好,架构从来都不是一蹴而就的,没有什么架构一开始设计就是最终版本,其中需要经过很多步骤的变化,今天我们就从一个最简单的例子来看看,究竟架构这个东西是怎么变的. 我将从一个最简单的聊天室的 ...

最新文章

  1. HDUOJ----剪花布条
  2. PDH光端机的原理_PDH光端机的作用优点
  3. C++ 贪吃蛇小游戏
  4. 类名.this与this的区别
  5. ubuntu下如何查看和设置分辨率 (转载)
  6. [导入]MsAjax Lib- Date.parseInvariant 函数
  7. Mac 安装mysql5.7.29
  8. ChIP-seq 数据分析1 ChIP-Seq技术2 ChIP-Seq数据分析
  9. 单片机控制NOKIA5110液晶屏之模块化编程
  10. 8m照片宽和高是多少_8寸照片的大小
  11. Python求二次方程根
  12. EndNote X8参考文献样式下载与自定义
  13. 两对等位基因控制一对相对性状的规律(基因互作)
  14. echart显示多组数据
  15. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(三)
  16. 【SDCC讲师专访】全栈工匠老曹:如何去认识全栈架构师?
  17. 计算机开机了进入不到桌面,电脑开机后进不了桌面,小编教你电脑开机后无法进入桌面怎么办...
  18. 深信服虚拟服务器断断续续的,深信服防火墙AF做双机时虚拟MAC问题的处理办法...
  19. 顺序表元素的多种删除方式——删除重复元素和删除掉所有相同元素
  20. 使用aspnet_regiis.exe注册.NET Framework

热门文章

  1. rf扫描枪_RF枪是什么,怎么用,在哪用?
  2. 2.1_7 Oracle 执行计划之1_优化器(Optimizer - CBORBO)
  3. MS17010漏洞利用姿势
  4. php劳务派遣系统,劳务派遣系统搭建
  5. 手把手教你把Python代码转成exe
  6. Excel 2010 VBA 入门 002 录制和运行宏
  7. 美区苹果id关闭双重认证_双重认证
  8. excel查看编码格式_Excel表格中格式转换的这些套路,你都get了吗?
  9. matlab把数据乘,【excel怎么相乘】如何把EXCLE数据导入到MATLAB中
  10. R语言将两个矩阵数据进行相乘、抽取矩阵的正对角线元素值