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]$
相关推荐
Fnetlink11 小时前
FNET 云网安 260819
网络·人工智能·安全·网络安全
lsh曙光2 小时前
playbook剧本(2)--Ansible变量
linux·运维·网络
START_GAME2 小时前
MSSQL$SQL2016
java·服务器·前端
发光小北3 小时前
IO‑Link 从站转接模块如何应用?
网络
我爱cope4 小时前
【计算机网络 | 数据链路层7:VLAN:一台交换机如何划分多个逻辑局域网?】
网络·学习·计算机网络
数据知道4 小时前
网络安全实战:服务指纹识别——Banner、协议探测、版本漏洞关联
网络·安全·web安全·网络安全
无锡耐特森4 小时前
ModbusTCP转Profinet网关:恒压供水系统互联互通解决方案
网络
tedcloud1234 小时前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
旗开得胜马到成功4 小时前
SK海力士SSD售后翻车:企业备份介质裸奔风险与中科热备技术选型拆解
运维·服务器·网络
瀚高PG实验室4 小时前
SQL优化案例:使用分区表优化SQL查询性能
linux·服务器·数据库·sql·microsoft·postgresql