python实现简单socket通信的方法


Posted in Python onApril 19, 2016

本文实例讲述了python实现简单socket通信的方法。分享给大家供大家参考,具体如下:

刚刚开始接触python,实现了一个helloworld程序---关于udp协议的socket通信demo。

首先服务端这边的实现如下:

import socket, traceback
host = '' # Bind to all interfaces 
port = 51500
# Step1: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Step2: 设置socket选项(可选)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Step3: 绑定到某一个端口
s.bind((host, port))
# Step4: 监听该端口上的连接
while 1:
  try:
    message, address = s.recvfrom(8192)
    print "Got data from ", address
    s.sendto("Data is received succeefully.", address)
  except (KeyboardInterrupt, SystemExit):
    print "raise"
    raise
  except :
    print "traceback"
    traceback.print_exc()

其中,host置为空,意思是可以绑定到所有的接口和地址,无论是哪个客户端的请求,只要是绑定到了同样的端口,那么服务器就可以监听到这个请求。

在tcp连接中,监听客户端的请求需要用到listen或accept函数,并有一个专门的socket和远程极其连接。

接着使我们的客户端实现:

import socket, sys
# Step1: 输入host和port信息
host = raw_input('please input host name: ')
textport = raw_input('please input textport: ')
# Step2: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
  port = int(textport)
except ValueError:
  port = socket.getservbyname(textport, 'udp')
# Step3: 打开socket连接  
s.connect((host, port))
# Step4: 发送数据
print "Enter data to transmit: "
data = sys.stdin.readline().strip()
s.sendall(data)
# Step5: 接收服务器发过来的数据
print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"
while 1:
  buf = s.recv(2048)
  if not len(buf):
    break
  sys.stdout.write(buf)

这个例子就是这么简单,实现起来和C语言版的差不多。看来,只要是了解socket编程的,用不同的语言实现也会相差无几。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python字符串匹配算法KMP实例
Jul 18 Python
Python制作钉钉加密/解密工具
Dec 07 Python
Python中协程用法代码详解
Feb 10 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
Python selenium爬取微博数据代码实例
May 22 Python
为什么相对PHP黑python的更少
Jun 21 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
python 多线程共享全局变量的优劣
Sep 24 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 #Python
python安装与使用redis的方法
Apr 19 #Python
Python实现文件复制删除
Apr 19 #Python
利用Python获取赶集网招聘信息前篇
Apr 18 #Python
Python Sql数据库增删改查操作简单封装
Apr 18 #Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 #Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 #Python
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
python实现给数组按片赋值的方法
2015/07/28 Python
Python中property函数用法实例分析
2018/06/04 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python判断无向图环是否存在的示例
2019/11/22 Python
Python requests模块session代码实例
2020/04/14 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
会计应聘求职信范文
2013/12/17 职场文书
《学会合作》教学反思
2014/04/12 职场文书
5s标语大全
2014/06/23 职场文书
医院合作协议书
2014/08/19 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
上班迟到检讨书
2015/05/06 职场文书
KTV员工管理制度
2015/08/06 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
python实现会员管理系统
2022/03/18 Python