Python Socket实现简单TCP Server/client功能示例


Posted in Python onAugust 05, 2017

本文实例讲述了Python Socket实现简单TCP Server/client功能。分享给大家供大家参考,具体如下:

网络上关于socket的介绍文章数不胜数。自己记录下学习的点点滴滴。以供将来复习学习使用。

socket中文的翻译是套接字,总感觉词不达意。简单的理解就是ip+port形成的一个管理单元。也是程序中应用程序调用的接口。

在这里我们先介绍如何启动tcp 的server

tcp连接中server部分,启动一个ip和port口,在这个port口监听,当收到client发来的请求,用一个新的端口port2同client建立连接。

socket启动监听的过程就是:

创建socket
bind端口
开始监听
建立连接+继续监听

代码:

'''
This is a testing program
the program is used to start server
'''
import socket
import sys
def start_tcp_server(ip, port):
  #create socket
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server_address = (ip, port)
  #bind port
  print 'starting listen on ip %s, port %s'%server_address
  sock.bind(server_address)
  #starting listening, allow only one connection
  try:
    sock.listen(1)
  except socket.error, e:
    print "fail to listen on port %s"%e
    sys.exit(1)
  while True:
    print "waiting for connection"
    client,addr = sock.accept()
    print 'having a connection'
    client.close()
if __name__ == '__main__':
  start_tcp_server('10.20.0.20', 12345)

在这里有一个常用技巧,在start_tcp_server中,我们最常用到的是本机的ip,为了程序的通用性,最好使用调用函数的方式获取ip地址。

用到两个函数socket.gethostnamesocket.gethostbyname('name')

ip = socket.gethostbyname(socket.gethostname())

但是问题是一般情况下得到的ip地址为127.0.0.1。

对于使用配置或dhcp获取的ip,可参考本站相关文章。

socket client 发起连接

流程为:

创建接口
发起连接
创建接口参数同socket server相同
发起连接的函数为socket.connect(ip,port)

这个地方的ip与port为socket server端的ip和监听port。

代码示例:

# -*- coding: utf-8 -*-
'''
This is a testing program
the program is used to test socket client
'''
import socket
import sys
def start_tcp_client(ip, port):
  #server port and ip
  server_ip = ip
  servr_port = port
  tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  try:
    tcp_client.connect((server_ip, server_port))
  except socket.error:
    print 'fail to setup socket connection'
  tcp_client.close()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python概率计算器实例分析
Mar 25 Python
python生成器generator用法实例分析
Jun 04 Python
Python实现批量下载图片的方法
Jul 08 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
python三方库之requests的快速上手
Mar 04 Python
详解python中index()、find()方法
Aug 29 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
浅析NumPy 切片和索引
Sep 02 Python
基于Python爬取素材网站音频文件
Oct 21 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 #Python
解决PyCharm中光标变粗的问题
Aug 05 #Python
Python实现的中国剩余定理算法示例
Aug 05 #Python
python爬虫_自动获取seebug的poc实例
Aug 05 #Python
python中的break、continue、exit()、pass全面解析
Aug 05 #Python
Python基于递归算法实现的走迷宫问题
Aug 04 #Python
Python实现的科学计算器功能示例
Aug 04 #Python
You might like
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP编程风格规范分享
2014/01/15 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
react-router中的属性详解
2017/06/01 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
基于pandas中expand的作用详解
2019/12/17 Python
Python模块的制作方法实例分析
2019/12/21 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
门诊手术室工作制度
2014/01/30 职场文书
租房协议书怎么写
2014/04/10 职场文书
三年级小学生评语
2014/04/22 职场文书
个性发展自我评价2015
2015/03/09 职场文书
求职意向书范本
2015/05/11 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers