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实现电子词典
Apr 23 Python
python实现百度关键词排名查询
Mar 30 Python
Python程序中的观察者模式结构编写示例
May 27 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
基于Python实现用户管理系统
Feb 26 Python
如何在django中实现分页功能
Apr 22 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
python3字符串输出常见面试题总结
Dec 01 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
快速查询Python文档方法分享
2017/12/27 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Django框架表单操作实例分析
2019/11/04 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
酒店实习个人鉴定
2013/12/07 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
益达广告词
2014/03/14 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
二手房买卖协议书
2014/04/10 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
大学生心理活动总结
2014/07/04 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
财务会计岗位职责
2015/02/03 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers