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

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

本文详细介绍如何使用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 相关产品和应用

全部下载

专题列表