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 控制语句
Nov 03 Python
Python采集腾讯新闻实例
Jul 10 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
Python的垃圾回收机制详解
Aug 28 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
结束运行python的方法
Jun 16 Python
如何更换python默认编辑器的背景色
Aug 10 Python
tensorflow中的数据类型dtype用法说明
May 26 Python
python字符串的一些常见实用操作
Apr 06 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中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
php工具型代码之印章抠图
2018/07/18 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
vue中轮训器的使用
2019/01/27 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
华为的Java面试题
2014/03/07 面试题
恶意软件的定义
2014/11/12 面试题
会展中心部门工作职责
2013/11/27 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
大学军训感言
2014/01/10 职场文书
小学防溺水制度
2014/01/29 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL