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. SpringCloud入门01之基础知识

    一.Spring Cloud 什么是spring cloud, 为什么要使用微服务架构? 参考度娘 Spring Cloud是一系列框架的有序集合, 它利用Spring Boot的开发便利性巧妙地简化 ...

  2. 基于Spring Boot的可直接运行的分布式ID生成器的实现以及SnowFlake算法详解

    背景 最近对snowflake比较感兴趣,就看了一些分布式唯一ID生成器(发号器)的开源项目的源码,例如百度的uid-generator,美团的leaf.大致看了一遍后感觉uid-generator代 ...

  3. Spring 商品分类

    实体商品示例代码 package cn.maxhou.entity; import java.io.Serializable; import java.math.BigDecimal; import ...

  4. nginx+keepalived互为主主高可用配置

    和nginx主从安装配置都一样   就是配置文件 多加个vip  里面具体要改的 请看下面的配置文件 直接master1上keepalived.conf配置文件内容: ! Configuration ...

  5. 【ZOJ】4012 Your Bridge is under Attack

    [ZOJ]4012 Your Bridge is under Attack 平面上随机n个点,然后给出m条直线,问直线上有几个点 \(n,m \leq 10^{5}\) 由于共线的点不会太多,于是我们 ...

  6. ARTS第九周打卡

    Algorithm : 做一个 leetcode 的算法题 /* 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. ...

  7. 如何用Dome4j(2.2.1)创建Xml

    XML解析器常见的有两种: 1.SAX解析器,用于xml的简单API 2.DOM解析器,文档对象模型 DOM就是利用对象来把文本模型化,但是模型实现有以下几个基本的点: 1. 用来表示.操作文档的接口 ...

  8. (错误)启动ActiveMQ报错:Transport Connector could not be registered in JMX: java.io.IOException: Failed to bind to server socket: stomp://0.0.0.0:61613?

    一.错误报告 很明显,端口被占用 二.解决方法 1. 在cmd中输入 netstat -ano 查看61613端口被占用情况,如果有其他进程使用,则使用 taskkill /f /pid 进程PID  ...

  9. (三)CXF之处理输入参数与输出类型为复杂类型的webService服务

    一.需求 调用webService服务,把用户名和密码封装为用户对象作为参数,返回该用户所用友的角色列表. 二.发布服务 2.1 编写服务接口 @WebService public interface ...

  10. (十二)Hibernate中的多表操作(2):单向多对一

    由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...