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基于DES算法加密解密实例
Jun 03 Python
Python列表删除的三种方法代码分享
Oct 31 Python
用Python shell简化开发
Aug 08 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Django 大文件下载实现过程解析
Aug 01 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python代码xml转txt实例
Mar 10 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
python 下载文件的多种方法汇总
Nov 17 Python
Python虚拟环境virtualenv是如何使用的
Jun 20 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
详解Python中with语句的用法
2015/04/15 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
python抓取文件夹的所有文件
2018/02/27 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
python 线程的五个状态
2020/09/22 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
社区志愿者培训方案
2014/06/10 职场文书
网络妈妈观后感
2015/06/08 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers