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 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
Python编写简单的HTML页面合并脚本
Jul 11 Python
详解 Python 读写XML文件的实例
Aug 02 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
python贪吃蛇游戏代码
Apr 18 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
python的sorted用法详解
Jun 25 Python
python manage.py runserver流程解析
Nov 08 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
python Django框架快速入门教程(后台管理)
Jul 21 Python
python实现商品进销存管理系统
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
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
类之Prototype.js学习
2007/06/13 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
python sys.argv[]用法实例详解
2018/05/25 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python中base64与xml取值结合问题
2019/12/22 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
物流专业大学的自我评价
2014/01/11 职场文书
销售人员获奖感言
2014/02/05 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
工程部文员岗位职责
2015/02/04 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python