socket样例

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

  1. 客户端
  2. # -*- coding:utf-8 -*-
  3. __author__ = 'shisanjun'
  4.  
  5. import socket
  6.  
  7. sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket对象
  8.  
  9. sock.connect(("127.0.0.1",9696))#链接服务器端
  10.  
  11. sock.send("中国我爱你aaaabbbb".encode("utf-8")) #给服务器端发送消息,发送数据只能是byte类型
  12.  
  13. data1=sock.recv(4096)#接受服务器端发过来的数据
  14.  
  15. print(data1.decode("utf-8"))
  16. print("")
  17. sock.close()
  18.  
  19. 服务端
  20. # -*- coding:utf-8 -*-
  21. __author__ = 'shisanjun'
  22.  
  23. import socket
  24.  
  25. sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  26. sock.bind(("127.0.0.1",9696)) #绑定ip和端口
  27. sock.listen(5) #监听
  28. print("接受前")
  29. conn,addr=sock.accept() #阻塞等客服端消息
  1. print("接受后")
  2. data = conn.recv(4096)
  1. “”“

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

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

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

  1. 客户端
  2. # -*- coding:utf-8 -*-
  3. __author__ = 'shisanjun'
  4.  
  5. import socket
  6.  
  7. sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  8.  
  9. sock.connect(("127.0.0.1",9696))
  10. while True:
  11. say=input("请输入文字>>")
  12. sock.send(say.encode("utf-8"))
  13.  
  14. data1=sock.recv(4096)
  15.  
  16. print(data1.decode("utf-8"))
  17. if say=='b':
  18. break
  19. sock.close()
  20.  
  21. 服务器端
  22. # -*- coding:utf-8 -*-
  23. __author__ = 'shisanjun'
  24.  
  25. import socket
  26.  
  27. sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  28. sock.bind(("127.0.0.1",9696))
  29. sock.listen(5)
  30. print("接受前")
  31. while True:
  32. conn,addr=sock.accept()
  33. while True:
  34. print("接受后")
  35. data = conn.recv(4096)
  36. print(data.decode("utf-8"))
  37. conn.send(data.upper())
  38.  
  39. sock.close()

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

  1. 客户端
  2. # -*- coding:utf-8 -*-
  3. __author__ = 'shisanjun'
  4.  
  5. import socket
  6. import json
  7. import os
  8. host=("127.0.0.1",9000)
  9. client=socket.socket()
  10.  
  11. client.connect(host)
  12.  
  13. while True:
  14. cmd_str=input("请输入命令>>").strip()
  15. if len(cmd_str)==0:continue
  16. cmd_list=cmd_str.split()
  17.  
  18. if cmd_list[0]=="put":
  19. if len(cmd_list)==1:
  20. print("not find put filename")
  21. else:
  22. filename=cmd_list[1]
  23. if os.path.isfile(filename):
  24. file_obj=open(filename,'rb')
  25. filename2=filename.split("/")[-1]
  26. print(filename2)
  27. data_stat="%s %s" %(filename2,os.path.getsize(filename))
  28. data={
  29. "filename":filename2,
  30. "filesize":os.path.getsize(filename)
  31. }
  32. client.send(json.dumps(data).encode("utf-8"))
  33. for line in file_obj:
  34. client.send(line)
  35. file_obj.close()
  36. else:
  37. print("can not find file")
  38. elif cmd_list[0]=="get":
  39. pass
  40.  
  41. 服务器端
  42. # -*- coding:utf-8 -*-
  43. __author__ = 'shisanjun'
  44.  
  45. import socket
  46. import json
  47. host=("127.0.0.1",9000)
  48. server=socket.socket()
  49.  
  50. server.bind(host)
  51. server.listen(5)
  52.  
  53. while True:
  54. conn,addr=server.accept()
  55.  
  56. data=conn.recv(4096)
  57. print(data.decode("utf-8"))
  58. data_dict=json.loads(data.decode("utf-8"))
  59. filename=data_dict.get("filename")
  60. f=open(filename,"wb")
  61. recesize=0
  62. while recesize<data_dict.get("filesize"):
  63. recefile=conn.recv(4096)
  64. f.write(recefile)
  65. recesize+=len(recefile)
  66. 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. 【Cf #292 D】Drazil and Morning Exercise(树的直径,树上差分)

    有一个经典的问题存在于这个子问题里,就是求出每个点到其他点的最远距离. 这个问题和树的直径有很大的关系,因为事实上距离每个点最远的点一定是直径的两个端点.所以我们可以很容易地进行$3$遍$Dfs$就可 ...

  2. phpredis用法笔记

    项目中用到redis集群, 发现phpredis对集群,分布式是有支持的.翻译下相关资料备用. redis扩展地址:https://github.com/phpredis/phpredis, 看到如下 ...

  3. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  4. intval floatval

    intval -- 获取变量的整数值 floatval -- 获取变量的浮点值 <?php $a = ; $b = ; $a/=$b; echo intval($a); echo floatva ...

  5. oracle进阶之分析函数

    本博客是自己在学习和工作途中的积累与总结,纯属经验之谈,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6797119.html 分 ...

  6. 科学计算三维可视化---Traits介绍

    简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...

  7. Kafka 0.8 Controller设计机制和状态变化

    在kafka集群中,其中一个broker server作为中央控制器Control,负责管理分区和副本状态并执行管理着这些分区的重新分配. 下面说明如何通过中央控制器操作分区和副本的状态. 名词解释 ...

  8. noVNC连接CentOS,以Web方式交付VNC远程连接

    什么是noVNC? noVNC 是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算.虚拟机控 ...

  9. Ubuntu16.04.2安装Tensorflow

    安装aptitude $ sudo apt-get install aptitude 安装python-pip python-dev $ sudo aptitude install python-pi ...

  10. 3.Filter和interceptor的区别

    https://blog.csdn.net/qq_36411874/article/details/53996873