socket 套接字通信
1、什么是socket
socket是一个模块,又称套接字,用来封装 互联网协议(应用层以下的层)
2、socket的作用
socket可以实现互联网协议应用层以下的层的工作
3、怎么使用socket
import socket
写socket套接字:
Client
Server
server.py文件内容:
<span>"""</span><span> 先启动套接字服务端 注意: 客户端一次发送,服务端先一次接收,再发送 </span><span>"""</span> <span>import</span><span> socket </span><span>#</span><span> 就好像:买手机</span> server =<span> socket.socket() </span><span>#</span><span> 绑定手机卡</span><span> #</span><span> ip地址相当于手机号码</span> server.bind((<span>"</span><span>127.0.0.1</span><span>"</span>, 9527<span>)) </span><span>#</span><span> 半连接池</span> server.listen(5) <span>#</span><span> 最多5个人坐椅子 实际上==6</span> <span>#</span><span> 循环实现可接收多了用户访问</span> <span>while</span><span> True: </span><span>#</span><span> 等待电话接入 ---> 客户端</span> <span>#</span><span> conn:指的是服务端通往客户端的管道</span> conn, addr =<span> server.accept() </span><span>#</span><span> 循环实现循环通信</span> <span>while</span><span> True: </span><span>try</span>: <span>#</span><span> 监听代码块是否有异常</span> <span>#</span><span> 接听对方讲话的内容</span> <span>#</span><span> data 客户端发送过来的消息</span> data = conn.recv(1024) <span>#</span><span> 可接收一次1024 bytes的数据</span> <span>if</span> data.decode(<span>"</span><span>utf-8</span><span>"</span>) == <span>"</span><span>q</span><span>"</span><span>: </span><span>break</span> <span>if</span> len(data) ==<span> 0: </span><span>break</span> <span>print</span><span>(data) </span><span>#</span><span> 服务端向客户端发送消息</span> res = input(<span>"</span><span>请回复客户端消息>>> </span><span>"</span><span>) conn.send(res.encode(</span><span>"</span><span>utf-8</span><span>"</span><span>)) </span><span>#</span><span> 捕获异常信息</span> <span>except</span><span> Exception as e: </span><span>#</span><span> 打印异常</span> <span>print</span><span>(e) </span><span>break</span> <span>#</span><span> 关闭通信,挂电话</span> conn.close()
www#gaodaima.com来源gaodai#ma#com搞@@代~&码*网搞代码
client.py文件内容:
<span>"""</span><span> 启动服务端后再启动客户端 </span><span>"""</span> <span>import</span><span> socket </span><span>#</span><span> 买手机</span> client =<span> socket.socket() </span><span>#</span><span> 拨号</span><span> #</span><span> 客户端的ip,port必须与服务器一致</span> client.connect((<span>"</span><span>127.0.0.1</span><span>"</span>, 9527<span>)) </span><span>#</span><span> 循环实现可接收多次服务端返回信息以及访问服务端信息</span> <span>while</span><span> True: send_data </span>= input(<span>"</span><span>请发送服务端消息>>> </span><span>"</span><span>) </span><span>#</span><span> 讲话给对方听</span> <span>#</span><span> 必须发送bytes</span> <span>#</span><span> client.send(b"hello")</span> <span>#</span><span> 或者编码</span> client.send(send_data.encode(<span>"</span><span>utf-8</span><span>"</span><span>)) </span><span>#</span><span> 客户端收到服务端返回信息</span> data = client.recv(1024<span>) </span><span>if</span> data.decode(<span>"</span><span>utf-8</span><span>"</span>) == <span>"</span><span>q</span><span>"</span><span>: </span><span>break</span> <span>if</span> len(data) ==<span> 0: </span><span>break</span> <span>print</span><span>(data) </span><span>#</span><span> 关闭通信,挂电话</span> client.close()
执行结果自行测试。