TCP编程服务器返回消息,Python进阶开发之网络编程,socket实现在线聊天机器人(示例代码)...

系列文章

本文目录

.什么是socket?

说到网络编程,难免要提到socket?

那什么是socket呢,中文名叫"套接字",更难理解了吧。

通俗来讲,socket表示一个网络连接,通过这个连接,使得主机间或者一台计算机上的进程间可以通讯。

不管是不同主机,还是同一主机。既然是通信,必定有一个发送方,一个接收方。对应一个客户端,和一个服务端。

.创建socket客户端

创建socket,建立连接

import socket

# 指定IPv4协议(AF_INET),IPv6协议请使用AF_INET6

# 指定使用TCP协议(SOCK_STREAM),UDP协议请使用SOCK_DGRAM

# 参数是一个tuple,tuple里指定服务器地址(域名或ip)和端口号

\'www.sina.com.cn\', 80))

发送数据

# 注意这里str格式要遵循HTTP协议标准。

# 注意结尾一定要用 \\r\\n\\r\\n

"GET / HTTP/1.1\\r\\nHost: www.sina.com.cn\\r\\n\\r\\n".encode("utf-8"))

接收数据

while True:

# 每次最多接收1k字节

1024)

if d:

# Python3接收到为bytes类型,要转为str

else:

break

\'\'.join(buffer)

.创建socket服务端

创建socket

import socket

绑定ip和port

# 注意以元组格式传入,可以是某网卡的公网ip,或0.0.0.0,或127.0.0.1

\'127.0.0.1\', 9999))

监听端口

# 指定等待连接的最大数量

5)

接收数据

while True:

# 接受一个新连接,阻塞的,只有接收到新连接才会往下走

# 每一次连接,都要创建新线程,否则一次只能处理一个连接

连接处理函数

def tcplink(sock, addr):

while True:

1024)

if data == \'exit\' or not data:

break

\'Hello, %s!\' % data)

.socket工作流程图解

2f06dfd3e5574d3d962d3f860218b3d9.jpg

.socket公共函数汇总

发送数据

# 发送TCP数据,返回值:发送的字节当量

"data string")

# 完整发送TCP数据,频繁调用send方法,确保数据发送完成

"data string")

# 发送UDP数据

"data string",address)

接收数据

# 接收TCP数据,一次最大只接收1k数据

1024)

# 接收UDP数据,一次只接收1k数据,返回值:数据和发送方ip

1024)

获取socket信息

# 获取远程socket的addr,port

# 获取本地socket的addr,port

获取其他信息

import socket

# 获取当前主机名

# 获取当前主机的ip

# 获取当前socket连接的文件描述符

设置socket

# 设置连接的超时时间

# 设置为非阻塞模式,默认是0(阻塞)

# 非阻塞下,accept和recv时一旦无数据,则报错:socket.Error

1)

# 设置socket内部参数,

# 具体有哪些参数,可以查看socket类的python源码

.实战:搭建在线聊天机器人

通过上面的学习,我们知道,同主机下或不同主机下的两个进程要进行通信(TCP/UDP,不管是消息传输还是文件传输),必定要借助socket这个桥梁。

那接下来,我们就一起来完成这个实战项目:在线聊天机器人。

思路:首先,客户端和服务端建立socket连接,然后客户端向服务端发送消息,服务端接收消息,并调用 图灵机器人API接口,获取回复返回给客户端。

在这里,我们需要先去图灵机器人(http://www.tuling123.com)申请帐号,并创建机器人应用,获取授权码。

一切准备就绪,就可以写我们的代码了。

客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值