Python Socket实现简单TCP Server/client功能示例
本文详细介绍如何使用Python标准库socket模块实现简单的TCP服务端与客户端通信。内容涵盖Socket基本概念、服务端监听流程(创建、绑定、监听、接受连接)及客户端连接流程,并提供完整的Python代码示例。同时讲解了获取本机IP地址的常用技巧,帮助开发者快速掌握Python网络编程基础。
本文通过一个具体实例,展示如何利用Python的Socket模块实现基础的TCP服务端与客户端通信功能,供读者参考学习。
网络上关于Socket的介绍文章众多,此处旨在记录个人学习过程中的关键要点,便于日后复习与回顾。
Socket中文常译为“套接字”,该译名可能未能直观表达其含义。通俗理解,Socket是由IP地址和端口号(port)组成的一个管理单元,也是程序中应用程序进行网络通信的接口。
接下来,我们将首先介绍如何启动TCP服务端(Server)。
在TCP连接中,服务端部分需要启动一个IP地址和端口号进行监听。当收到客户端(Client)发来的请求时,服务端会使用一个新的端口(port2)与客户端建立连接。
Socket启动监听的具体过程如下:
1. 创建Socket对象 2. 绑定端口(bind) 3. 开始监听(listen) 4. 接受连接并继续监听
相关代码如下:
'''
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地址,而不是硬编码。
主要用到两个函数:socket.gethostname 与 socket.gethostbyname('name')。
ip = socket.gethostbyname(socket.gethostname())
然而,通常情况下,通过上述方法获取到的IP地址可能是127.0.0.1(本地回环地址)。
若需获取通过配置或DHCP动态分配的IP地址,可参考本站的相关文章。
接下来介绍Socket客户端(Client)如何发起连接。
客户端的连接流程如下:
1. 创建Socket接口(参数与Server端相同) 2. 发起连接 3. 发起连接的函数为 socket.connect(ip, port)
此处的ip与port参数应指向Socket服务端的IP地址和监听端口。
客户端代码示例如下:
# -*- 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程序设计有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













