精华内容
下载资源
问答
  • 主要介绍了python 通过 socket 发送文件的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Socket Client(Local)向Socket Server Service发送要控制的Remount及指令 Socket Server Service向指定的Remount发送指令,并将结果返回给Local 2.2 实现方式 2.2.1 Socket Server Service Socket Server ...
  • 主要介绍了python使用socket向客户端发送数据的方法,涉及Python使用socket实现数据通信的技巧,非常具有实用价值,需要的朋友可以参考下
  • 目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- ...download_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\client\download' gd_client=socket.sock...

    目录结构:

    1387811-20180814144840122-147820133.png

    client:

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    import socket, struct, json
    download_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\client\download'
    
    gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    gd_client.connect(('127.0.0.1',8123))
    
    while True:
        #1、发命令
        cmd=input('>>: ').strip() #get a.txt
        if not cmd:continue
        gd_client.send(cmd.encode('utf-8'))
    
        #2、以写的方式打开一个新文件,接收服务端发来的文件的内容写入客户的新文件
        #第一步:先收报头的长度
        obj=gd_client.recv(4)
        header_size=struct.unpack('i',obj)[0]
    
        # 第二步:再收报头
        header_bytes = gd_client.recv(header_size)
    
        # 第三步:从报头中解析出对真实数据的描述信息
        header_json = header_bytes.decode('utf-8')
        header_dic = json.loads(header_json)
        '''
        header_dic = {
            'filename': filename,  # 1.txt
            'file_size': os.path.getsize(r'%s\%s' % (share_dir, filename))  # 路径/1.txt
        }    
        '''
    
        total_size = header_dic['file_size']
        file_name = header_dic['filename']
    
        # 第四步:接收真实的数据
        with open(r'%s\%s'%(download_dir, file_name),'wb') as f:
            recv_size = 0
            while recv_size < total_size:
                line = gd_client.recv(1024)
                f.write(line)
                recv_size += len(line)
                print('总大小:%s   已下载大小:%s' % (total_size, recv_size))
    
    gd_client.close()
    

    server:

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    import socket
    import subprocess
    import struct
    import json
    import os
    
    share_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\server\share'
    gd_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    gd_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    gd_server.bind(('127.0.0.1', 8123))  # 0-65535: 0-1024给操作系统使用
    gd_server.listen(5)
    
    while True:
        conn, client_addr = gd_server.accept()
    
        while True:  # 通信循环
            try:
                # 1、收命令
                res = conn.recv(8096)  # b'get 1.txt'
                if not res: break  # 适用于linux操作系统
    
                # 2、解析命令,提取相应命令参数
                cmds = res.decode('utf-8').split() # ['get','1.txt']
                filename = cmds[1]
    
                # 3、以读的方式打开文件,读取文件内容发送给客户端
                # 第一步:制作固定长度的报头
                header_dic = {
                    'filename': filename,  # 1.txt
                    'file_size':os.path.getsize(r'%s\%s'%(share_dir, filename))  # 路径/1.txt
                }
    
                header_json = json.dumps(header_dic)
                header_bytes = header_json.encode('utf-8')
    
                # 第二步:先发送报头的长度
                conn.send(struct.pack('i',len(header_bytes)))
    
                # 第三步:再发报头
                conn.send(header_bytes)
    
                # 第四步:再发送真实的数据
                with open('%s/%s'%(share_dir, filename),'rb') as f:
                    for line in f:
                        conn.send(line)
            except ConnectionResetError:  # 适用于windows操作系统
                break
    
        conn.close()
    gd_server.close()

    命令输入: get 1.txt ,然后即可将 server 端的 share文件内的 1.txt 文件 发送到 client 端的 download文件夹下

    图片、视频、文字都可以发送,因为传送的是 二进制文件

    原理是:server 端以读的形式打开文件,client端以写 的方式打开文件,然后client端把 一条一条的二进制写入文件后保存即可。

    转载于:https://www.cnblogs.com/friday69/p/9474580.html

    展开全文
  • 主要给大家介绍了关于利用pythonsocket发送http(s)请求的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起看看吧
  • 本文介绍了python发送和接收大数据的思路: 发送方提供要发送数据的长度,接收方根据数据长度,循环接收数据,直到全部接收。并采用自定义的header结构体,保证每次数据传送的独立。 发送方代码示例: # 自定义...

    本文介绍了python发送和接收大数据的思路:
    发送方提供要发送数据的长度,接收方根据数据长度,循环接收数据,直到全部接收。并采用自定义的header结构体,保证每次数据传送的独立。
    发送方代码示例:

    # 自定义header
    def build_header(data_len):
        header = {'data_len': data_len}
        return json.dumps(header).encode('UTF-8')
    # 发送报文
    def send(client, message):
        data_len = len(message)
        header = build_header(data_len)
        header_len = len(header)
        struct_bytes = struct.pack('i', header_len)
        # 粘包发送
        client.send(struct_bytes)
        client.send(header)
        client.send(message.encode('UTF-8'))
    

    接收方代码示例:

    # 接收报文
    def recv(client_conn):
        # 拆包接收
        struct_bytes = client_conn.recv(4)
        header_len = struct.unpack('i', struct_bytes)[0]
        header_bytes = client_conn.recv(header_len)
        header = json.loads(header_bytes.decode('UTF-8'))
        data_len = header['data_len']
    	# 循环接收数据
        gap_abs = data_len % 1024
        count = data_len // 1024
        recv_data = b''
        for i in range(count):
             data = client_conn.recv(1024, socket.MSG_WAITALL)
             recv_data += data
        recv_data += client_conn.recv(gap_abs, socket.MSG_WAITALL)
    
        return recv_data
    

    另,根据《python参考手册》查看recv函数接口除了size之外,还有一个flag参数,有一个选项是:MSG_WAITALL,表示在接收的时候,函数一定会等待接收到指定size之后才会返回。

    展开全文
  • 我们以访问百度主页为案例,使用socket发送http请求。 import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('www.baidu.com',80)) s.send('''GET https://www.baidu.com/ HTTP/...
        

    我们以访问百度主页为案例,使用socket发送http请求。

    import socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(('www.baidu.com',80))
    s.send('''GET https://www.baidu.com/ HTTP/1.1
    Host: www.baidu.com
    Connection: keep-alive
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
    Accept-Language: zh-CN,zh;q=0.8
    
    ''')
    
    buf=s.recv(1024)
    while len(buf):
        print buf
        buf = s.recv(1024)
     

    基于socket进行http编程在于请求参数的可控性更好,但是难度相应就更大了。以上发送的数据是直接从fiddler抓包器里面复制的。

    展开全文
  • ''' ...如果浏览器的请求内容为:/,服务端响应码为200...from socket import * #与客户端交互 def handle(connfd): #获取http请求,获取到的请求格式就是以请求行,请求头等组成的字符串(每一行是以/r/n结尾) data = ...
    '''
    编写一个http服务端程序
    如果浏览器的请求内容为:/,服务端响应码为200,ok
    如果浏览器的请求是其他的,响应码为404 Not Found 内容为'Sorry'
    '''
    from socket import *
    
    #与客户端交互
    def handle(connfd):
    	#获取http请求,获取到的请求格式就是以请求行,请求头等组成的字符串(每一行是以/r/n结尾)
    	data = connfd.recv(4096).decode()
    	#切割请求内容,并取出请求行,请求行内容为:请求类型 请求内容(/xxx) http/1.1
    	request_line = data.split('\n')[0]
    	#从请求行中取出请求内容
    	info = request_line.split(' ')[1]
    	if info == '/':
    			#组织成http响应格式返回给浏览器,每一行以/r/n结尾
    			response = 'HTTP/1.1 200 OK\r\n'		#模拟相应行
    			response += 'Content-Type:text/html/r/n'	#模拟响应头
    			response += '\r\n'				#模拟空行
    			response += '<h1>欢迎</h1>'				#模拟响应体
    	else:
    			response = 'HTTP/1.1 404 Not Found\r\n'  #模拟相应行
       			response += 'Content-Type:text/html/r/n' #模拟响应头
    			response += '\r\n'    			#模拟空行
      			response += '<h1>Sorry...</h1>'    	#模拟响应体
      	#发送给浏览器
      	connfd.send(response.encode())
    
    #搭建网络
    def main():
    	sockfd = socket()
    	sockfd.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
    	sockfd.bind(('0.0.0.0',8000))
    	sockfd.listen(3)
    	#循环接收连接
    	while True:
    		connfd,addr = sockfd.accept()
    		print('Connect from',addr)
    		#将处理客户端请求的逻辑封装
    		handle(connfd)

    之后运行程序,就可以通过IP地址使用浏览器访问了

    展开全文
  • python tcpsocket 服务器程序,支持http json数据格式发送,支持log日志打印
  • Pythonsocket

    2019-09-20 05:36:49
    介绍 Pythonsocket。本文使用Python编写了一个客户端和服务端,服务端收到客户端发送的字符串后打印出结果。 服务端 socket_server.py文件: [codesyntax lang="python"] __author__ = 'su...
  • 语言Python,利用socket进行文件传输 针对windows本地文件D盘主目录下的6个子目录对应6中文件,如 D:\主目录\001\2021-01-01\xxx 每个子目录每天会产生一个新的次子目录并附带一些内部文件以当天日期命名如 D:\主...
  • import socket import json ip = '127.0.0.1' port = 8000 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((ip, port)) dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} list =...
  • python通过socket发送list和字典数据

    千次阅读 2020-10-16 17:50:53
    import socket import json ip = '127.0.0.1' port = 8000 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((ip, port)) dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} list =...
  • 下面的代码是关于python 使用socket远程发送命令并获得执行结果 的代码,希望对各朋友有较大用。#socket_server.py import socket import os import sys def work(): sock = socket.socket(socket.AF_INET, ...
  • pythonsocket发送C结构体

    千次阅读 2016-10-14 14:38:19
    http://zengleo.iteye.com/blog/394001
  •  本文主要使用socket.socket发送UDP广播来实现聊天室功能。  重点难点:理解UDP通讯流程、多线程、UDP广播收发等。  测试环境:Win10\Python3.5。  程序基本流程:创建接收端socket ---> 创建发送socket...
  • python使用socket向客户端发送数据的方法 这篇文章主要介绍了python使用socket向客户端发送数据的方法,涉及Python使用socket实现数据通信的技巧,非常具有实用价值,需要的朋友可以参考下 import socket, sys port = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,555
精华内容 1,022
关键字:

python发送socket

python 订阅