欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

socket应用

程序员文章站 2022-04-15 16:38:11
socket的使用 socket.socket(网络层ip协议蔟,传输层协议类型,默认协议) socket的通信过程 socket的应用 ......

socket的使用

socket.socket(网络层ip协议蔟,传输层协议类型,默认协议)

# server.py
# 导入模块
import socket

# 实例化服务器,使用ipv4协议,tcp协议
s = socket.socket(socket.af_inet,socket.sock_stream)

# 绑定端口号 0.0.0.0监听所有ip地址
s.bind(('0.0.0.0',12345)) 

# 监听端口,设置连接数 
s.listen(5)

# 阻塞挂起,等待客户端连接
connsocket,addr = s.accept()

# 连接成功后,接收客户端发来的数据,设置一次接收的数据大小,1kb
data = connsocket.recv(1024)

# 返回数据
connsocket.send(data)

# 断开连接
connsocket.close()

# client.py
# 导入模块
import socket

# 实例化客户端
client = socket.socket(socket.af_inet,socket.sock_stream)

# 连接服务器
client.connect(('127.0.0.1',8080))

# 接收服务器数据
client.recv(1024)

# 断开连接
client.close()

socket的通信过程

socket应用

socket的应用

# 模拟http客户端发送请求

# 导入socket模块和url解析模块
import socket
from urlparse import urlparse

# 定义发送请求get_url函数
def get_url(url):
   # 解析url
   url = urlparse(url)
   # 提取主机名
   host = url.netloc
   # 提取路径
   path = url.path
   # 如果路径没有,访问根路径
   if path == "":
      path = "/" 
   # 客户端实例化 
   client = socket.socket(socket.af_inet,socket.sock_stream)
   # 建立socket连接
   client.connect((host,80))
   # 构造http协议 
   protol = "get {} http/1.1\r\nhost:{}\r\nconnection:close\r\n\r\n".format(path,host)
   # 发送请求数据
   client.send(protol)
   # 定义data接收服务器的返回结果 
   data = ""
   # 确保接收完数据
   while true:
     d = client.recv(1024)
     # 如果有值继续拼接
     if d:
       data += d
     else:
       break
    # 将返回协议提取出来
    html_data = data.split('\r\n\r\n')[1]
    # 打印提取结果
    print html_data 
    # 断开tcp连接