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减少循环层次和缩进的技巧分析
Mar 15 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
PHP实现发送和接收JSON请求
Jun 07 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python批量处理csv并保存过程解析
May 16 Python
Python过滤序列元素的方法
Jul 31 Python
python 6行代码制作月历生成器
Sep 18 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
python高温预警数据获取实例
Jul 23 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
论坛头像随机变换代码
2006/10/09 PHP
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
Node.js编码规范
2014/07/14 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python计算方程式根的方法
2015/05/07 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
小学教师事迹材料
2014/01/13 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
教师节简报
2015/07/20 职场文书
《称赞》教学反思
2016/02/17 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle