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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
Python实现partial改变方法默认参数
Aug 18 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
pandas DataFrame索引行列的实现
Jun 04 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 Python
pandas中pd.groupby()的用法详解
Jun 16 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反弹shell实现代码
2009/04/22 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
js字符串与Unicode编码互相转换
2017/05/17 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
Python接口自动化判断元素原理解析
2020/02/24 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
总监职责范文
2013/11/09 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
单位工作证明范本
2015/06/15 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
python删除csv文件的行列
2021/04/06 Python
python turtle绘图命令及案例
2021/11/23 Python