# 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)的更多相关文章

  1. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  2. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  3. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  4. python网络编程socket /socketserver

    提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...

  5. python --- 网络编程Socket

    网络编程 定义:所为网络编程即是对信息的发送和接收. 主要工作: (1)发送端:将信息以规定的协议组装成数据包. (2)接收端:对收到的数据包解析,以提取所需要的信息. Socket:两个在网络上的程 ...

  6. Python网络编程-Socket简单通信(及python实现远程文件发送)

    学习python中使用python进行网络编程,编写简单的客户端和服务器端进行通信,大部分内容来源于网络教程,这里进行总结供以后查阅. 先介绍下TCP的三次握手: 1,简单的发送消息: 服务器端: i ...

  7. Day10 Python网络编程 Socket编程

    一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...

  8. python网络编程——socket基础篇

    python的网络编程比c语言简单许多, 封装许多底层的实现细节, 方便程序员使用的同时, 也使程序员比较难了解一些底层的东西. 1 TCP/IP 要想理解socket,首先得熟悉一下TCP/IP协议 ...

  9. Python 网络编程——socket

    一 客户端/服务器架构 客户端(Client)服务器(Server)架构,即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) 理想/目标状态—— 最常用的软件服务器是 ...

  10. Python网络编程—socket(二)

    http://www.cnblogs.com/phennry/p/5645369.html 接着上篇博客我们继续介绍socket网络编程,今天主要介绍的内容:IO多路复用.多线程.补充知识点. 一.I ...

随机推荐

  1. 2019/4/16 wen 反射与JVM

  2. 利用策略模式实现了同一接口的多个Servicel实现类,如何同时注入Controller

    解决方法如上图,通过给实现类起别名,并在controller中,通过@Qualifier注解获取不同的实现类,之前没有这样写,会出现这样的情况: 通过@autowired注解注入dao层时为空,会报空 ...

  3. 软考自查:UML建模

    UML建模 内容提要 用例图 类图与对象图 顺序图 活动图 状态图 通信图 构件图 用例图 包含关系 扩展关系 泛化关系     类图与对象图 填类名,方法名,属性名 填多重度 填关系     1: ...

  4. make capslock+hjkl as arrows

    Solution 2 (probably better) I was happy with solution 1, until I realized I couldn't use the key bi ...

  5. css复合选择器的权重

    选择器的权重 标签选择器的权重为0001 class选择器的权重为0010 id选择器的权重为0100 属性选择器的权重为0010 伪类选择器的权重为0010 伪元素选择器的权重为0010 包含选择器 ...

  6. CSS scroll-behavior和JS scrollIntoView让页面滚动平滑

    转自 https://www.zhangxinxu.com/wordpress/2018/10/scroll-behavior-scrollintoview-%E5%B9%B3%E6%BB%91%E6 ...

  7. Tomcat性能优化(转载)

    出处:微信订阅号GitChat精品课程 — Tomcat性能优化 Tomcat 简单介绍 Sun 公司创建了第一个 Servlet 容器,即 Java Web Server,但 JWS 只是为了演示 ...

  8. python实现将base64编码的图片下载到本地

    # -*- coding:utf-8 -*- #!python3 import os import base64 sss ="""base64的编码"" ...

  9. Demo整合

    1.图片上传:  https://github.com/842549829/WebUploader 2.百度编辑器: https://github.com/842549829/Ueditor 3.安卓 ...

  10. 第 10 章 容器监控 - 079 - 监控利器 sysdig

    sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器. 通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为. Linux 上有很多常用的监控工具,比如 strace,t ...