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基础教程之数字处理(math)模块详解
Mar 25 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
python中OrderedDict的使用方法详解
May 05 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
numpy中索引和切片详解
Dec 15 Python
对django views中 request, response的常用操作详解
Jul 17 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 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
第七节 类的静态成员 [7]
2006/10/09 PHP
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
MySQL授权问题总结
2007/05/06 PHP
php生成随机密码的几种方法
2011/01/17 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
python挖矿算力测试程序详解
2019/07/03 Python
django Admin文档生成器使用详解
2019/07/22 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
德国旅游网站:weg.de
2018/06/03 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
2019年.net常见面试问题
2012/02/12 面试题
护理专业毕业生推荐信
2013/10/31 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
优秀党员事迹材料
2014/12/18 职场文书
办公室文员岗位职责
2015/02/04 职场文书
小学生交通安全寄语
2015/02/27 职场文书