python socket服务端

#导入socket包
from socket import *
from time import ctime

#1、定义域名和端口号
host,port='',9999

#2、定义缓冲区 缓存
BUFFER_SIZE = 1024
ADDR = (host,port)


#3、创建服务器套接字 AF_INET IPV4 SOCK_STREAM协议
tcpServerSocket = socket(AF_INET,SOCK_STREAM)

# 4、绑定域名和端口号
tcpServerSocket.bind(ADDR)

#5、监听连接
tcpServerSocket.listen(5)

#6、定义一个循环 等待客户端的连接
print('服务器创建成功,等待连接........')

while True:

   #6.1打开一个客户端连接 同意你连接
   tcpServerSocket,addr=tcpServerSocket.accept()
   print('连接服务器的客户端对象',addr)
   #6.2 循环的过程
   while True:
     #6.3 拿到数据 recv从缓冲区读取指定长度的数据
     # decode()解码 bytes--->str encode()编码 str-->bytes
     data = tcpClientSocket.recv(BUFFER_SIZE).decode()
     if not data:
         break
     print('data=',data)
      #6.4 发送时间还有信息
     tcpClientSocket.send(('[%s]%s'%(ctime(),data)).encode())
      
      
#7 关闭资源
     tcpClientSocket.close()
tcpServerSocket.close()


      
          
     
     
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以尝试使用以下方法来解决Python Socket服务端不终止的问题: 1. 确保在完成所有操作后关闭Socket连接。你可以使用`socket.close()`方法来关闭连接。确保在适当的位置调用该方法,以确保连接被正确关闭。 2. 使用`try`和`except`语句来捕获异常并终止服务端。在你的代码中一个异常处理块,可以捕获到可能导致服务端无法终止的异常,并在其中终止服务端。 ```python import socket # 创建Socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP和端口 server_address = ('localhost', 8888) server_socket.bind(server_address) # 监听连接 server_socket.listen(1) try: while True: # 接受客户端连接 client_socket, client_address = server_socket.accept() # 处理客户端请求 # ... # 关闭客户端连接 client_socket.close() except KeyboardInterrupt: # 捕获Ctrl+C终止信号 print("服务端被终止") finally: # 关闭服务端Socket连接 server_socket.close() ``` 在上面的代码中,使用了`try`和`except`语句来捕获`KeyboardInterrupt`异常(即用户按下Ctrl+C终止程序的信号),在异常处理块中打印一条消息并终止服务端。 3. 使用守护线程(daemon thread)来运行服务端。在创建服务端线程之前,设置线程为守护线程。当主线程终止时,守护线程会自动结束。 ```python import socket import threading def handle_client(client_socket): # 处理客户端请求 # ... # 关闭客户端连接 client_socket.close() # 创建Socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP和端口 server_address = ('localhost', 8888) server_socket.bind(server_address) # 监听连接 server_socket.listen(1) while True: # 接受客户端连接 client_socket, client_address = server_socket.accept() # 创建线程处理客户端请求 client_thread = threading.Thread(target=handle_client, args=(client_socket,)) # 设置线程为守护线程 client_thread.daemon = True # 启动线程 client_thread.start() ``` 在上面的代码中,创建了一个守护线程`client_thread`来处理每个客户端连接。当主线程终止时,守护线程也会随之终止。 这些方法可以帮助你解决Python Socket服务端不终止的问题。根据你的具体情况选择其中一种方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值