python 网络编程(Socket)
# from wsgiref.simple_server import make_server
#
# def RunServer(environ,start_response):
# start_response(status='200 OK',headers=[('Content-Type','text/html')])
# url=environ['PATH_INFO']
#
# return "guozhendong"
#
# if __name__=='__main__':
# httpd=make_server('',8008,RunServer)
# print("Servering HTTP on port 8008....")
# httpd.serve_forever() """
python 网络编程
Socket(TCP、IP)套接字 服务端
1、运行起来 ip和端口,等待别人的连接
客户端
客户端
客户端
以下是服务器端代码
"""
import socket sk=socket.socket()
sk.bind(("172.8.250.59",8008))
sk.listen(5)#表示只能等待5个人 while True:
conn, ip = sk.accept() # 接收客户端的请求,并会阻塞,程序一直在这句话等待连接,以下的语句不会被执行
# conn和Ip为获取到连接对象的ip地址和端口
#print(conn, ip)
conn.sendall(bytes('你好',encoding='utf-8'))
while True:
ret_bytes=conn.recv(1024)
ret_str=str(ret_bytes,encoding='utf-8')
#print(ret_str)
conn.sendall(bytes(ret_str+"执行这里了",encoding='utf-8'))
"""
这个是Socket网络编程的服务端
"""
import socket obj=socket.socket();
obj.connect(("172.8.250.59",8008))
recive=obj.recv(1024)#最多接收1024字节
recive=str(recive,encoding='utf-8')
print(recive) while True:
inp=input("请输入要发送的内容")
if inp=='q':
obj.sendall(bytes(inp, encoding='utf-8'))
break
else:
obj.sendall(bytes(inp, encoding='utf-8'))
print(str(obj.recv(1024), encoding='utf-8')) ------------------------------------------------------------------ 利用Socket发送文件
# from wsgiref.simple_server import make_server
#
# def RunServer(environ,start_response):
# start_response(status='200 OK',headers=[('Content-Type','text/html')])
# url=environ['PATH_INFO']
#
# return "guozhendong"
#
# if __name__=='__main__':
# httpd=make_server('',8008,RunServer)
# print("Servering HTTP on port 8008....")
# httpd.serve_forever() """
python 网络编程
Socket(TCP、IP)套接字 服务端
1、运行起来 ip和端口,等待别人的连接
客户端
客户端
客户端
"""
import socket sk=socket.socket()
sk.bind(("172.8.250.59",8008))
sk.listen(5)#表示只能等待5个人 while True:
conn, ip = sk.accept() # 接收客户端的请求,并会阻塞,程序一直在这句话等待连接,以下的语句不会被执行
# conn和Ip为获取到连接对象的ip地址和端口
conn.sendall(bytes("你好,欢迎登陆",encoding='utf-8'))
f=open('new.png','wb')
file_size=str(conn.recv(1024),encoding='utf-8')#接收到服务端发送的文件的大小
conn.sendall(bytes("开始吧", encoding='utf-8'))
total_size=int(file_size)
print(total_size)
has_rev=0 while True:
if total_size==has_rev:
break
ret_bytes=conn.recv(1024)
f.write(ret_bytes)
has_rev+=len(ret_bytes)
f.close();
#客户端
"""
这个是Socket网络编程的服务端
"""
import socket
import os obj=socket.socket();
obj.connect(("172.8.250.59",8008))
recive=obj.recv(1024)#最多接收1024字节
recive=str(recive,encoding='utf-8')
print(recive)
#获取当前文件的大小
size=os.stat('f.JPG').st_size
print(size,type(size))
obj.recv(1024)#解决粘包问题
obj.sendall(bytes(str(size),encoding='utf-8'))
with open('f.JPG','rb') as f:
for line in f:
obj.sendall(line)
obj.close()
"""
为了使文件发送完后自动停止接收,需要获取当前文件的大小
"""
#由于文件发送依赖缓存区,但是缓存区的文件发送东西需要等待一会时间,再把文件发送过去,如果把文件和前边的大小以及其他东西放在一起发送,这就会造成粘包,解决粘包问题需要服务器端接收完文件大小后,返回一个确定消息,即可解决粘包问题 -----------------------------------------------
利用socketserver可以实现多个连接访问,代码如下
import socketserver class MyServer(socketserver.BaseRequestHandler):
def handle(self):
conn=self.request
conn.sendall(bytes(('欢迎访问我'),encoding='utf-8'))
while True:
ret_bytes=conn.recv(1024)
ret_str=str(ret_bytes,encoding='utf-8')
if ret_str=='q':
break
conn.sendall(bytes(ret_str+'号',encoding='utf-8')) if __name__=='__main__':
server=socketserver.ThreadingTCPServer(("172.8.250.59",8008),MyServer)
server.serve_forever()
python 网络编程(Socket)的更多相关文章
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- python网络编程socket /socketserver
提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...
- python --- 网络编程Socket
网络编程 定义:所为网络编程即是对信息的发送和接收. 主要工作: (1)发送端:将信息以规定的协议组装成数据包. (2)接收端:对收到的数据包解析,以提取所需要的信息. Socket:两个在网络上的程 ...
- Python网络编程-Socket简单通信(及python实现远程文件发送)
学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅. 先介绍下TCP的三次握手: 1,简单的发送消息: 服务器端: i ...
- Day10 Python网络编程 Socket编程
一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...
- python网络编程——socket基础篇
python的网络编程比c语言简单许多, 封装许多底层的实现细节, 方便程序员使用的同时, 也使程序员比较难了解一些底层的东西. 1 TCP/IP 要想理解socket,首先得熟悉一下TCP/IP协议 ...
- Python 网络编程——socket
一 客户端/服务器架构 客户端(Client)服务器(Server)架构,即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) 理想/目标状态—— 最常用的软件服务器是 ...
- Python网络编程—socket(二)
http://www.cnblogs.com/phennry/p/5645369.html 接着上篇博客我们继续介绍socket网络编程,今天主要介绍的内容:IO多路复用.多线程.补充知识点. 一.I ...
随机推荐
- 获取某个元素第一次出现在数组(json数组)的索引
function firstIndex(arr, text) { // 若元素不存在在数组中返回-1 let firstVal = -1; for (let i = 0; i < arr.len ...
- MyElasticsearch
目录 那些必须要知道的事儿 搭建elasticsearch环境 快速上手 elasticsearch分析数据的过程漫谈 建议器:Suggester IK中文分词器 elasticsearch for ...
- FIT2096 Assignment 2 2019
FIT2096 Assignment 2 2019_v1.2.docx 9/04/2019 11:34 AMPage 1 | 4FIT2096 Assignment 2 2019Transformat ...
- Centos7通过SSH使用密钥实现免密登录
日常开发中,难免会有登录服务器的操作,而通过ssh方式登录无疑是比较方便的一种方式. 如果登录较频繁,使用密钥实现免密登录无疑更是方便中的方便.因此本文就简单说一说如何实现免密登录. 一.安装配置ss ...
- opencv学习之路(35)、SURF特征点提取与匹配(三)
一.简介 二.opencv中的SURF算法接口 三.特征点匹配方法 四.代码 1.特征点提取 #include "opencv2/opencv.hpp" #include < ...
- Bresenham算法
1 算法原理 基本原理从某处摘得:设直线方程为yi+1=yi+k(xi+1-xi)+k.假设列坐标象素已经确定为xi,其行坐标为yi.那么下一个象素的列坐标为xi+1,而行坐标要么为yi,要么递增1为 ...
- Text ------widget树由两个widget:Center(及其子widget)和Text组成
import 'package:flutter/material.dart'; void main() => runApp(new Center( child: new Text( 'Hello ...
- P2178 [NOI2015]品酒大会
思路 在后缀树上进行一些操作就好了 后缀树上LCA的maxlen就是两个后缀的LCP的长度了 然后统计每个点作为LCA的次数和最大值.次大值.最小值.次小值 然后就做完了 代码 #include &l ...
- yii restful和一般路由共存
<?php namespace app\controllers; use Yii; use yii\rest\ActiveController; /** * */ class TestContr ...
- BeanUtils的copyproPerties方法的用法
转自:Hassan Blog的博客 一.简介: BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包 ...