tcp 服务端(用于测试)

在tcp客户端连接后,可持续接收客户端发送的信息。

复制代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket

HOST = '0.0.0.0'
PORT = 8880

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen(5)
print '[*] 服务器已启动 (长连接模式),正在监听 %s:%s' % (HOST, PORT)
print '[*] 客户端连接后可发送多条消息,输入 "quit" 或 "exit" 断开连接'

while True:
    # 等待新客户端连接
    client_conn, client_addr = server_socket.accept()
    print '\n[+] 接收到来自 %s:%s 的新连接,进入对话模式' % (client_addr[0], client_addr[1])
    
    try:
        # 保持与当前客户端的连接,循环接收消息
        while True:
            # 接收数据
            data = client_conn.recv(1024)
            
            if not data:
                # 客户端正常关闭连接(发送了空数据)
                print '[-] 客户端 %s:%s 已主动断开连接' % (client_addr[0], client_addr[1])
                break
                
            # 解码数据(Python 2中recv返回的是字符串)
            message = data.strip()
            print '[%s:%s] 收到: %s' % (client_addr[0], client_addr[1], message)
            
            # 检查是否为退出指令
            if message.lower() in ('quit', 'exit', 'bye'):
                response = 'Goodbye! Connection will be closed.\n'
                client_conn.sendall(response)
                print '[-] 客户端请求退出,断开与 %s:%s 的连接' % (client_addr[0], client_addr[1])
                break
                
            # 处理业务逻辑(这里示例:将消息转为大写并返回)
            # 你可以在这里替换成你的实际处理逻辑
            processed_message = message.upper()
            response = 'Server processed: %s\n' % processed_message
            
            # 发送响应
            client_conn.sendall(response)
            print '[ ] 已发送响应: %s' % response.strip()
            
    except socket.error as e:
        # 客户端异常断开(如网络故障)
        print '[!] 与 %s:%s 的连接异常: %s' % (client_addr[0], client_addr[1], str(e))
        
    finally:
        # 确保连接被关闭
        client_conn.close()
        print '[ ] 连接 %s:%s 已清理\n' % (client_addr[0], client_addr[1])

如果提示:

bash 复制代码
[zhao@ tcpServeringTest]$ python tcpServer.py 
Traceback (most recent call last):
  File "tcpServer.py", line 10, in <module>
    server_socket.bind((HOST, PORT))
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
[zhao@ tcpServeringTest]$ 

那些按如下执行,终止之前的tcp服务

bash 复制代码
[zhao@ tcpServeringTest]$ 
[zhao@hljcors tcpServeringTest]$ sudo netstat -tlnp | grep :8880
tcp        0      0 0.0.0.0:8880            0.0.0.0:*               LISTEN      3658/python         
[zhao@ tcpServeringTest]$ 
[zhao@ tcpServeringTest]$ 
[zhao@tcpServeringTest]$ sudo kill -9  3658
[1]+  Killed                  python tcpServer.py
[zhao@ tcpServeringTest]$
相关推荐
迪康coolmu11 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
xiaoye-duck11 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
qq_3718021113 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT13 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
坤坤子吖15 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
xiaoye-duck16 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
say_fall16 小时前
【AI大模型】MCP 模型上下文协议:客户端-服务器架构、JSON-RPC 消息与能力协商、工具发现与调用链路、与函数调用的分工
服务器·人工智能·架构
andxe17 小时前
工业级 PoE 交换机选型指南:破解边缘部署四大核心难题
运维·网络·安全·光通信·交换机
木子欢儿19 小时前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
say_fall19 小时前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信