1、#传输文件的例子

import socket
from socket import *
import os
import requests

import time,socketserver,struct,os,_thread

def conn_thread(conn,addr):
while 1:
try:
conn.settimeout(600)
fileinfo_size=struct.calcsize('30sl')
buf=conn.recv(fileinfo_size)
if buf:
filename,filesize=struct.unpack('30sl',buf)
filename_f=filename.decode().strip('\00')
filenewname=os.path.join('e:\\',os.path.basename(filename_f))
print('文件名称:%s,文件大小:%s'%(filenewname,filesize))
recvd_size=0
file=open(filenewname,'wb')
print('开始传输文件内容。。。') while not recvd_size==filesize:
if filesize-recvd_size>1024:
rdata=conn.recv(1024)
recvd_size+=len(rdata)
else:
rdata=conn.recv(filesize-recvd_size)
recvd_size=filesize
print('type(rdata):',type(rdata))
file.write(rdata)
file.close()
print('receive done') except socket.timeout:
conn.close() while 1:
  

sk=socket()
      addr=('127.0.0.1',9999)
      sk.bind(addr)
      sk.listen(3)

print('开始进入监听状态:')
conn,addr=sk.accept() print('连接来自:',addr)
#t=threading.Thread(target=conn_thread,args=(conn,addr))
#t.start()
_thread.start_new_thread(conn_thread,(conn,addr)) sk.close()

client 文件传输客户端代码:

from socket import *
import os addr=('127.0.0.1',9999)
#addr=('39.106.41.11',9999)
sk=socket(AF_INET,SOCK_STREAM)
sk.connect(addr) #文件传输客户端 import os,struct
#while 1:
filepath=input('请输入要传输的文件路劲:')
print(type(filepath))
print(len(filepath.encode()))
if os.path.isfile(filepath):
fhead=struct.pack('30sl',filepath.encode(),os.stat(filepath).st_size)
print('文件大小为:',os.stat(filepath).st_size)
sk.send(fhead)
print('文件路径:',filepath) fp=open(filepath,'rb')
while 1:
filedata=fp.read(1024)
if not filedata:
break
sk.send(filedata)
fp.close()
print('传输成功!')
sk.close()

2、传输系统可执行的命令,服务端执行完成,返回客户端执行结果

server端:

import socket
from socket import *
import os
import requests def get(url):
return requests.get(url) sk=socket()
addr=('127.0.0.1',9999)
sk.bind(addr)
sk.listen(3) while 1:
print('连接开始了。。。。') conn,addr=sk.accept()
print('来自客户端:',addr) data=conn.recv(1024).decode()
print(data) com,pram=data.split() #result=eval("requests.get('"+data+"')")
#result=requests.get(data) #result=eval(com+'('+'"'+pram+'"'+')')
result=eval(com)(pram)
conn.sendall(result.text[:1024].encode()) #注意一定要text,否则会卡在这里 conn.close()
sk.close()

client 客户端传输命令:

from socket import *
import os addr=('127.0.0.1',9999) sk=socket(AF_INET,SOCK_STREAM)
sk.connect(addr) data='get http://www.sohu.com'
sk.send(data.encode())
print(sk.recv(1024).decode()) sk.close()

socket 编程的一些应用例子的更多相关文章

  1. socket编程——一个简单的例子

    从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client ++++ ...

  2. socket编程 —— 非阻塞socket (转)---例子已上传至文件中

    在上一篇文章 <socket编程——一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...

  3. 基于MFC的socket编程

    网络编程 1.windows 套接字编程(开放的网络编程接口)添加头文件#include<windows.h> 2.套接字及其分类 socket分为两种:(1)数据报socket:无连接套 ...

  4. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  5. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  6. Windows下C语言的Socket编程例子(TCP和UDP)

    原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ...

  7. 一个linux下socket编程的例子,client连server

    关于socket编程,以下文章写得比较好:http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html 1. accept()函 ...

  8. Linux socket编程示例(最简单的TCP和UDP两个例子)

    一.socket编程 网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路. 基于TCP的网络编程: 基于连接, 在交互过程中, 服务器和客户端要保持连接, 不 ...

  9. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

随机推荐

  1. kubespray部署k8s

    0.把外网的/usr/local/bin/*拷过来覆盖 1.把部署好的集群的 calicoctl cni-plugins-linux-amd64-v0.8.1.tgz kubeadm-v1.16.3- ...

  2. Java 面试 - 打印九九乘法口诀表

    在Java面试过程中, 面试者经常会被要求手写代码或上机操作.一般来说,手写代码或上机操作,主要还是考察面试者的分析问题和解决问题的能力.打印九九乘法口诀无疑是非常基础的,那么如何实现呢?首先我们先来 ...

  3. Elasticsearch 常用配置参数总结

    # ---------------------------------- Cluster ----------------------------------- # Use a descriptive ...

  4. Windows用Eclipse来开发hadoop的WordCount的helloworld

    [学习笔记] 2.Win7用Eclipse来开发hadoop的WordCount的helloworld网上下载hadoop-eclipse-plugin-2.7.4.jar,将该jar包拷贝到Ecli ...

  5. Netty源码剖析-断开连接

    参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! ----主线: ----源码: 在NioEventLoop的unsa ...

  6. Python3的内置函数介绍

    Python3的官网链接:https://docs.python.org/3/library/functions.html?highlight=built#ascii 内置函数介绍 abs 绝对值函数 ...

  7. dict字典

    dict字典 字典的概述 • 概述:使⽤键-值(key-value)⽅式存储. • key的特点: • 1.字典中的key必须是唯⼀的 • 2.key值必须是不可变的数据类型:字符串.元组.Numbe ...

  8. 20190705-Python数据驱动之DDT

    DDT ddt 是第三方模块,需安装, pip install ddt DDT包含的装饰器 包含一个类装饰器@ddt和两个方法装饰器@data和@file_data 通常情况下,@data中的数据按照 ...

  9. SpringMVC 出现 406(Not Acceptable)

    首先,需要清楚,http state 406代表什么意思: 406是HTTP协议状态码的一种,表示无法使用请求的特性来响应请求的网页.一般指客户端浏览器不接受所请求页面的MIME类型. 出现这样的错误 ...

  10. linux 添加硬盘找不到使用/sys/class/scsi_host/host/scan

    添加磁盘到dg--首先通知存储管理员划分相应的盘到指定的机器,说明共享--扫描磁盘(两个节点执行)[root@testrac1 ~]# echo "- - -" > /sys ...