day26_socket即基于tcp的socket编程

1、socket模块

1.1 什么是socket

socket是应用层与协议层TCP/IP协议族通信的中间软件抽象层,它是一组接口

在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议

1.2 socket模块介绍

python内置模块

import socket

2、基于tcp协议简单编程

tcp是基于连接的,必须先启动服务器,然后再 启动客户端去连接服务器

server端

import socket
server = socket.socket()
server.bind(('127.0.0.1',10086)) # 把地址绑定到套接字
server.listen()  # 监听连接
conn,addr =server.accept()  # 接受客户端的连接
ret = conn.recv(1024)  # 接收客户端的信息
print(ret)  # 打印客户端信息
conn.send(b'hi')  # 发送消息给客户端
conn.close()  # 关闭客户端套接字
seerver.close()  # 关闭服务器套接字(可选)

client端

import socket
client = socket.socket()  # 创建客户端套接字
client.connect(('127.0.0.1',10086))  # 尝试连接服务器
client.send(b'hello')  # 发送消息给服务器
ret = client.recv(1024)  # 接收服务器的消息
print(ret)  # 打印服务器消息
client.close()  # 关闭客户端套接字

重启服务端可能会报错:

# 加入一条socket匹配,重用ip和端口
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
server = socket.socket()
socket.setsockopt(SOL_SOCKET,SOREUSEADDR,1)  # 在bind前添加,重用服务器地址
server.bind(('127.0.0.1',10086))
sercer.listen()
conn,addr = server.accept()
ret = conn.recv(1024)
print(ret)
conn.send(b'hi')
conn.close()
server.close()
posted @ 2019-11-04 22:22  W文敏W  阅读(110)  评论(0编辑  收藏  举报