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实现简单HTML表格解析的方法
Jun 15 Python
Python制作数据导入导出工具
Jul 31 Python
Python实时获取cmd的输出
Dec 13 Python
Python字符串切片操作知识详解
Mar 28 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Python 寻找局部最高点的实现
Dec 05 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
解决keras backend 越跑越慢问题
Jun 18 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
python写入已存在的excel数据实例
2018/05/03 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
中学教师自我鉴定
2014/02/07 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
幼儿园教师求职信
2015/03/20 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android