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 数据加密代码
Dec 24 Python
跟老齐学Python之有容乃大的list(2)
Sep 15 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
让python在hadoop上跑起来
Jan 27 Python
Python+微信接口实现运维报警
Aug 27 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python帮你识破双11的套路
Nov 11 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
Python字符串查找基本操作代码案例
Oct 27 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
改进Django中的表单的简单方法
2015/07/17 Python
python距离测量的方法
2018/03/06 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python dict的常用方法示例代码
2020/06/23 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
高中军训感言400字
2014/02/24 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
拆迁委托协议书
2014/09/15 职场文书
颐和园的导游词
2015/01/30 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
Python函数对象与闭包函数
2022/04/13 Python