day29——socket套接字(少量不全)

day29

socket套接字

  • socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统.

    为什么存在socket抽象层?

    如果直接与操作系统数据交互非常麻烦,繁琐,socket对这些繁琐的操作高度的封装,简化.

  • socket在python中就是一个模块.

基于TCP协议的socket简单通信

服务端
import socket

# 买电话
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # 默认基于TCP协议的socket

# 绑定电话卡
phone.bind(('192.168.14.198',8848))  # 绑定IP地址和端口

# 开机监听
phone.listen(5)
print(111)

# 等待连接
conn, addr = phone.accept() # 阻塞
print(conn,addr)

from_client_data = conn.recv(1024)  # 至多接受1024个字节  阻塞
print(f'来自客户端{addr[0]}的消息:{from_client_data.decode("utf-8")}')

to_client_data = input('>>>')
conn.send(to_client_data.encode('utf-8'))
conn.close()
phone.close()
客户端
import socket

# 买电话
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # 默认基于TCP协议的socket

# 拨号打电话
phone.connect(('127.0.0.1',8848))
data = input('请输入>>>')

phone.send(data.encode('utf-8'))
from_server_data = phone.recv(1024)
print(f'来自服务端的消息:{from_server_data}')


# 关闭电话
phone.close()

基于TCP协议的socket通信循环

posted @ 2019-08-20 21:39  SupSnake  阅读(100)  评论(0编辑  收藏  举报