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 相关文章推荐
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
用python处理MS Word的实例讲解
May 08 Python
Python装饰器知识点补充
May 28 Python
python实现批量注册网站用户的示例
Feb 22 Python
Python argparse模块使用方法解析
Feb 20 Python
python实现在线翻译功能
Mar 03 Python
python环境下安装opencv库的方法
Mar 05 Python
Python学习笔记之装饰器
Aug 06 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
详解Python内置模块Collections
Mar 22 Python
Python实现双向链表基本操作
May 25 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python对象及面向对象技术详解
2016/07/19 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
python简单验证码识别的实现方法
2019/05/10 Python
使用python绘制二维图形示例
2019/11/22 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python 如何查找特定类型文件
2020/08/17 Python
python实现磁盘日志清理的示例
2020/11/05 Python
animation和transition的区别
2020/10/12 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
怎样写好自荐信和推荐信
2013/12/26 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
九华山导游词
2015/02/03 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
学前班教学反思
2016/02/24 职场文书
合作协议书格式范本
2016/03/21 职场文书
深度学习详解之初试机器学习
2021/04/14 Python