# 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. 2、每日复习点--ConcurrentHashMap vs HashMap vs HashTable

    HashMap:允许键或者值为null.底层是基于数组+链表的结构.默认初始容量是16,默认加载因子是0.75F,默认扩容增加一倍.如果指定了初始容量n,n必然在(2x,2x+1]范围内,n经过运算所 ...

  2. python面试问题集锦

    GIL(全局解释器锁) 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. 1.python语 ...

  3. HTML和CSS怎么用

    首页> 1.HTML和CSS是什么? ·网站和HTML页面 ·简单理解网站 ·一个房子比喻(HTML比喻成房子,CSS为装修) ·页面的整体结构:有树桩标签对嵌套组成 ·页面的组成单元:元素 · ...

  4. ubuntu学习笔记

    Linux操作系统 locale –a查看支持语言 ls查看目录 ls .l / 查看根目录 apt-get –h 安装软件看帮助信息 sudo apt-get inatall packge 安装包 ...

  5. 一些Java基础方面问题的总结

    1.Overloaded的方法是否可以改变返回值的类型? 答案:可以. overload是重载,overloaded是什么?重载的过去式?我还以为是我没见过的注解,也没有给限定条件,代码测试一下. p ...

  6. 2018-2019-2 网络对抗技术 20165303 Exp1 PC平台逆向破解(BOF实验)

    1.实践目的 本次实践的对象是一个名为pwn1的linux可执行文件. 三个实践内容如下: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏洞,构造一个 ...

  7. Lab 11-1

    Analyze the malware found in Lab11-01.exe. Questions and Short Answers What does the malware drop to ...

  8. QSS 记录

    1.border-style 属性分别有 none 定义无边框. hidden 与 "none" 相同.不过应用于表时除外,对于表,hidden 用于解决边框冲突. dotted ...

  9. zoj2930

      各点向S连推迟的花费,向T连提前的花费,S表示提前,T表示推迟.a推迟b也推迟b往a连INF.最小割后从各点出发,能直接或间接到T的就是必须推迟的,剩下的就是能提前的. #include < ...

  10. 【Java】【11】String数组和List相互转换

    正文: 1,String[]转List String[] strs = {"aa", "bb", "cc"}; //String数组 //方 ...