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

Jasper
Jasper
发布时间:2026-10-13| 1人浏览过
原创

本文详细介绍如何使用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程序设计有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。