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字符串详细介绍
May 09 Python
python套接字流重定向实例汇总
Mar 03 Python
pyhton列表转换为数组的实例
Apr 04 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
python中字符串的编码与解码详析
Dec 03 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
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python的gevent框架的入门教程
2015/04/29 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
党风廉设责任书
2014/04/16 职场文书
大学生工作自荐书
2014/06/16 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
安全责任书怎么写
2014/07/28 职场文书
会计电算化实训报告
2014/11/04 职场文书
罗马假日观后感
2015/06/08 职场文书