python基础—socket套接字(1)

socket套接字:把传输层(端口),网络层(ip),数据链路层(Mac),物理层 整体做了封装,直接在应用层(应用程序)调用相关接口即可

一个简单的服务端,客户端

'服务端'
import socket, time

# 1实例化一个链接对象
socket_obj = socket.socket()
print('socket_obj',
      socket_obj)  # socket_obj <socket.socket fd=212, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
# 2绑定ip+端口
socket_obj.bind(('127.0.0.1', 8000))
# 3监听,队列最多5个
socket_obj.listen(5)
# 4等待链接,返回两个值
a, b = socket_obj.accept()
print(a)  # a为对象
print(b)  # b为客户端ip+端口
data = a.recv(1024)  # 接收数据,设置最大1024byte
data_decode = data.decode('utf8')  # 数据解码
print(data_decode)

# 修改数据后传给客户端
data_upper = data_decode.upper()
time.sleep(10)
a.send(data_upper.encode('utf8'))

a.close()  # 关闭链接
socket_obj.close()
'客户端'
import socket
import time

# 1实例化链接对象
socket_obj = socket.socket()
# 2建立链接
socket_obj.connect(('127.0.0.1', 8000))
time.sleep(2)
# 3发数据,byte格式
socket_obj.send('abcd'.encode('utf8'))

# 4接收数据
data = socket_obj.recv(1024)
print(data.decode('utf8'))
# 5关闭客户端
socket_obj.close()

 服务端accept对应客户端的connect.多了一个bind绑定ip和端口。.accept会生成一个新的链接对象。后面的传输都由这个对象来完成

posted @ 2020-12-23 17:37  枫叶学python  阅读(99)  评论(0)    收藏  举报