python怎么连接socket

1,434次阅读
没有评论
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'))

这种写法只能是点对点发送信息,如果是点对多,需要循环执行对接的客户端,时间原因,不再敲代码。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python基础教程2022-11-22发表,共计1573字。
新手QQ群:570568346,欢迎进群讨论 Python51学习