Python小哥哥

Python是如何实现通讯功能的?

2019-03-15  本文已影响0人  我爱学python

socket又称套接字,应用程序可以通过它发出或接收网络请求,实现通讯功能。

创建socket

socket.socket([family[, type[, protocal]]])

1、family 可以是 AF_UNIX 或 AF_INET(默认是这个)。

2、type 可以是 SOCK_STREAM(默认是这个) 或 SOCK_DGRAM。

3、protocol 一般不填,默认值为 0。

4、所以创建socket也可以用socket.socket(),不加任何参数。

下面代码的部分屏幕是可以左右滑动的。

我们需要创建两个.py文件

server.py

import socket
# 创建socket对象,相当于买手机
# python学习群683380553
serversocket = socket.socket()
# 获取本地主机名
host = socket.gethostname()
# 设定端口号,理论上1024-65535都可以
port = 1234
# 绑定地址和端口,相当于给手机插上电话卡
serversocket.bind((host, port))
# 设置最大连接数,超过后排队,待机状态
serversocket.listen(5)
# 设置循环,可以不停地接电话
while True:
    # 建立客户端连接,接电话    
    clientsocket, addr = serversocket.accept()    
    print("连接地址: %s" % str(addr))    
    # 发消息    
    msg = '连接到服务器了。'    
    clientsocket.send(msg.encode('utf-8'))    
    # 接收信息,数据不能大于1024个字节    
    str_1 = clientsocket.recv(1024).decode()    
    print(str_1)    
    # 挂断电话    
    clientsocket.close()

client.py

# 导入 socket模块
import socket
# 创建 socket 对象
s = socket.socket()
# 获取本地主机名
host = socket.gethostname()
# 设置端口号,理论上1024-65535都可以
port = 1234
# 连接服务,指定主机和端口
s.connect((host, port))
# 接收小于 1024 字节的数据
msg = s.recv(1024)print(msg.decode('utf-8'))
# 发送信息
s.send('连接到一个客户端。'.encode('utf-8'))
# 关闭连接
s.close()

以上。不明白的地方,大家要多看注释。

一个比较好理解socket的方法:将socket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip与port的绑定就标识了互联网中独一无二的一个应用程序。

上一篇下一篇

猜你喜欢

热点阅读