socket样例

一:只能一个客户端发送一个信息。

客户端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket对象 sock.connect(("127.0.0.1",9696))#链接服务器端 sock.send("中国我爱你aaaabbbb".encode("utf-8")) #给服务器端发送消息,发送数据只能是byte类型 data1=sock.recv(4096)#接受服务器端发过来的数据 print(data1.decode("utf-8"))
print("")
sock.close() 服务端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1",9696)) #绑定ip和端口
sock.listen(5) #监听
print("接受前")
conn,addr=sock.accept() #阻塞等客服端消息
print("接受后")
data = conn.recv(4096)
“”“

recv 官方建议最大8192 ,默认是阻塞的,客服端没有数据就是阻塞,如果客户 
断开,conn,recv收到就是都是空数据,就会进入死循环,解决
if not data:
break


”“”
print(data.decode("utf-8")) conn.send(data.upper()) sock.close()

二:只能一个客户端发送N多消息

客户端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect(("127.0.0.1",9696))
while True:
say=input("请输入文字>>")
sock.send(say.encode("utf-8")) data1=sock.recv(4096) print(data1.decode("utf-8"))
if say=='b':
break
sock.close() 服务器端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1",9696))
sock.listen(5)
print("接受前")
while True:
conn,addr=sock.accept()
while True:
print("接受后")
data = conn.recv(4096)
print(data.decode("utf-8"))
conn.send(data.upper()) sock.close()

三:多个客户端发送多个消息(实现文件上传功能)

客户端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket
import json
import os
host=("127.0.0.1",9000)
client=socket.socket() client.connect(host) while True:
cmd_str=input("请输入命令>>").strip()
if len(cmd_str)==0:continue
cmd_list=cmd_str.split() if cmd_list[0]=="put":
if len(cmd_list)==1:
print("not find put filename")
else:
filename=cmd_list[1]
if os.path.isfile(filename):
file_obj=open(filename,'rb')
filename2=filename.split("/")[-1]
print(filename2)
data_stat="%s %s" %(filename2,os.path.getsize(filename))
data={
"filename":filename2,
"filesize":os.path.getsize(filename)
}
client.send(json.dumps(data).encode("utf-8"))
for line in file_obj:
client.send(line)
file_obj.close()
else:
print("can not find file")
elif cmd_list[0]=="get":
pass 服务器端
# -*- coding:utf-8 -*-
__author__ = 'shisanjun' import socket
import json
host=("127.0.0.1",9000)
server=socket.socket() server.bind(host)
server.listen(5) while True:
conn,addr=server.accept() data=conn.recv(4096)
print(data.decode("utf-8"))
data_dict=json.loads(data.decode("utf-8"))
filename=data_dict.get("filename")
f=open(filename,"wb")
recesize=0
while recesize<data_dict.get("filesize"):
recefile=conn.recv(4096)
f.write(recefile)
recesize+=len(recefile)
f.close()

python网络编程-socket样例的更多相关文章

  1. Python网络编程socket

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

  2. Day07 - Python 网络编程 Socket

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

  3. python --- 网络编程Socket

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

  4. Python 网络编程——socket

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

  5. python网络编程-socket编程

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

  6. python网络编程socket /socketserver

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

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

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

  8. Day10 Python网络编程 Socket编程

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

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

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

随机推荐

  1. 【bzoj1937】 Shoi2004—Mst 最小生成树

    http://www.lydsy.com/JudgeOnline/problem.php?id=1937 (题目链接) 题意 一个无向图,给出一个生成树,可以修改每条边的权值,问最小修改多少权值使得给 ...

  2. Moonraker:1靶机入侵

      0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...

  3. config配置中心之自动刷新

    自动刷新(自动刷新是基于springcloudbus来实现的,springcloud bus是基于rabbitMQ或者Kafka来实现的) Spring Cloud Bus 将分布式的节点用轻量的消息 ...

  4. RF parameter

    There are primarily 3 features which can be tuned to improve the predictive power of the model : 说明: ...

  5. bzoj 3224

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 16656  Solved: 7255[Submit][St ...

  6. Python【操作EXCEL文件】

    #Python中,对EXCEL文件的读写操作需要安装.导入几个第三方模块#xlrd模块:只能读取EXCEL文件,不能进行写操作#xlwt模块:只能进行写操作,但是不能是覆盖写操作(也就是修改Excel ...

  7. Java质数求解

    质数概念 质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数).最小的素数是2,也是素数中唯一的偶数:其他素数都是奇数.质数有 ...

  8. select()函数

    select(),确定一个或多个套接口的状态,本函数用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性.可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返 ...

  9. bzoj千题计划118:bzoj1028: [JSOI2007]麻将

    http://www.lydsy.com/JudgeOnline/problem.php?id=1028 枚举等待牌 枚举对是哪个 判断 #include<cstdio> #include ...

  10. Tomcat设置编码问题

    为了解决编码问题,在tomcat的server.xml文件中添加了useBodyEncodingForURI="true"配置,如下 <Connector port=&quo ...