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实现获取某天是某个月中的第几周
Feb 11 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python表示矩阵的方法分析
May 26 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
详解爬虫被封的问题
Apr 23 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
python实现按行分割文件
Jul 22 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
pycharm显示远程图片的实现
Nov 04 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 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源代码数组统计count分析
2011/08/02 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
js程序中美元符号$是什么
2008/06/05 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
python类和继承用法实例
2015/07/07 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
如何使用python操作vmware
2019/07/27 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
经济类毕业生求职信
2014/06/26 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
二手房购房意向书
2015/05/09 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
python urllib库的使用详解
2021/04/13 Python
Node.js实现断点续传
2021/06/23 Javascript