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 ...
随机推荐
- linux环境中通过/dev/urandom设备产生随机密码
需求说明: 今天在调试SVN的时候,需要创建用户的随机密码,想了下,在linux环境中是否能够生成呢,就搜索了下, 然后结合看到的帖子,分析一个可以生成密码的命令,在此记录下. 操作过程: 1.通过/ ...
- 面试官问我“Java中的锁有哪些?以及区别”,我跪了
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级 ...
- Linux性能优化-理解平均负载
1 平均负载含义 当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况. 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数.错误定义:单位时间内的c ...
- Mac在Finder中显示隐藏文件
1.显示隐藏文件 打开终端,输入下面的命令: defaults write com.apple.finder AppleShowAllFiles -bool true KillAll Finder ...
- javascript自定义一个全类型读取的函数
我爱撸码,撸码使我感到快乐!大家好,我是Counter.因为我们知道,在JavaScript中有自带的方法可以读取类型,但是不很全面,今天来分享下如何自己定义一个函数,将所有传入参数的类型给打印出来, ...
- Bootstrap3基础 栅格系统 col-lg/md/sm/xs-* 简单示例
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- js函数式编程curry与compose实现
//自行实现以下curry函数和compose //curry function curry(fn) { return function aa (...arg) { if (arg.length &g ...
- scala链接mysql
方法一:链接并操作mysql //链接Mysqlval driver = "com.mysql.jdbc.Driver"val url = "jdbc:mysql://1 ...
- 转载redis持久化的几种方式
redis持久化的几种方式 1.前言 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服 ...
- HackerRank-Python攻城歷程-1.Tuples
Solution: if __name__ == '__main__': n = int(input()) integer_list = map(int, input().split()) t=tup ...