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多线程编程(一):threading模块综述
Apr 05 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Python对wav文件的重采样实例
Feb 25 Python
Python爬虫requests库多种用法实例
May 28 Python
python反爬虫方法的优缺点分析
Nov 25 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
jQuery回调方法使用示例
2017/06/26 jQuery
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
JS实现简易留言板(节点操作)
2020/03/16 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python运用于数据分析的简单教程
2015/03/27 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
django-filter和普通查询的例子
2019/08/12 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
Python实现爬取并分析电商评论
2020/06/19 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
德国电子商城:ComputerUniverse
2017/04/21 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
《锄禾》教学反思
2014/04/08 职场文书
授权委托书样本
2014/09/25 职场文书
春风化雨观后感
2015/06/11 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
Python入门之基础语法详解
2021/05/11 Python
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL