socket server化

本文深入解析socket的工作原理,包括客户端和服务端的建立连接过程及数据交互方式。通过Python实例演示如何使用socket进行网络通信,包括服务端的监听、接受连接、发送与接收数据,以及客户端的连接、发送数据和接收响应。
摘要由CSDN通过智能技术生成

1、简述socket原理

      socket又称套间字或者插口,是网络通信中必不可少的工具。有道是:“无socket,不网络”。由于socket最早在BSD Unix上使用,而Unix/Linux所奉为经典的至高哲学是“一切皆是文件”。因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功能函数。

下面大致的按照客户端和服务端将所需的函数详细的列举出来

上面的两个图都概述了socket的通讯原理

2、python中socket server实例

服务端:

# 导入 socket模块
import socket
import urllib.request

# 创建 socket 对象
s = socket.socket()

# 绑定IP地址和端口号
s.bind(("10.202.98.14", 8000))  #本主机地址和端口号

# 设置最大连接数,超过后排队
s.listen(5)
print("等待连接...")

while True:
    conn,addr = s.accept()  #conn为套接字,addr为Ip地址
    print("连接地址: " ,addr)
    msg='欢迎访问菜鸟教程!'
    conn.sendall(msg.encode('utf-8')) #向客户端发送消息,8位编码格式编码为字节传输

    urlByte = conn.recv(1024)  #接收客户端的消息
    print(urlByte)  #接收到的是字节类型
    print(urlByte.decode('utf-8'))#对字节进行解码

    urlStr = urlByte.decode('utf-8')
    urllib.request.urlretrieve(urlStr,"1.jpg") #给了图片网址链接,将图片下载下来

    conn.close()#关闭套接字

客户端:

# 导入 socket模块
import socket
import urllib.request

# 创建 socket 对象
s = socket.socket()

# 连接服务,指定IP地址和端口(服务器端的)
s.connect(("10.202.98.14", 8000))

#向服务端发送图片网址链接,编码成字节形式进行发送
s.sendall("http://img.netbian.com/file/20110706/527402dc667609f7ad644c5a51361fdc.jpg".encode('utf-8'))

# 接收小于 1024 字节的数据
msg = s.recv(1024)#接收服务端的消息,接收的是字节类型
s.close()
print (msg.decode('utf-8'))#对字节类型进行解码

先执行服务端,服务端执行到accept开始阻塞,等待客户端的响应,再执行客户端。

客户端执行结果:

服务端执行结果:并将该图片下载下来了

参考: socket技术详解(看清socket编程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值