# 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. 针对多条件查询,应对 url 无用 null 值现象处理

    多条件查询 应对 url 无用 null 值现象 处理例如:http://xxoo.b2b.com/orders?city_id=5&repertory_id=7&area_id=39 ...

  2. chocolatey使用

    chocolatey使用 安装 使用管理员权限打开CMD,输入: @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ( ...

  3. 微信小程序表单验证

    参考:http://www.cnblogs.com/zhangxiaoyong/p/10166951.html

  4. elasticsearch搭建并通过go-mysql-elasticsearch同步db数据达到搜索引擎的目的

    logstash-input-jdbc/elasticsearch-jdbc缺点:删除记录没有办法同步,只能两边执行自己的删除命令,版本16年后未更新. go-mysql-elasticsearch缺 ...

  5. opencv学习之路(32)、角点检测

    一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...

  6. 7-27 Codeforces Round #499 (Div. 2)

    C. Fly 链接:http://codeforces.com/group/1EzrFFyOc0/contest/1011/problem/C 题型:binary search .math. 题意:总 ...

  7. 每天一套题打卡|河南省第十一届ACM/ICPC

    A 计划日 题意:已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗? 模拟日期计算: 计算星期可以用基姆拉尔森公式 //中国 ...

  8. Java集合源码分析之ArrayList

    ArrayList简介 从上图可以看到,ArrayList是集合框架中List接口的一个实现类,它继承了AbstractList类,实现了List, RandomAccess, Cloneable, ...

  9. 也谈开源GIS架构实现思想

    针对业务发展需要,需要开发设计一套具备自己独立GIS平台.然而以ArcGIS为主的GIS软件价格昂贵,在经过仔细技术与市场动向调研后,确立一套以Java语言的开源GIS软件平台.桌面CS端Udig+G ...

  10. 内网环境使用ansible安装software 需要外网时,如何绑定代理呢

    内网环境使用ansible安装software 需要外网时,如何绑定代理呢? 方法一: 在ansible 的脚本里,yum install 的地方,添加语句: environment: https_p ...