问题描述:什么是死锁?

死锁发生在当一个服务器和客户端同时试图往一个连接上写东西或同时从一个连接上读的时候。在这种情况下,没有进程可以得到任何数据(如果它们都正在读),因此,如果它们正在写,向外的buffer会被充满,结果他们就好象被骗了,什么都做不了。

示例服务器代码:

import socket,traceback

host=""
port=51423

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
sock.bind((host,port))
sock.listen(1)

while True:
    try:
        clientsock,clientaddr= sock.accept()
    except KeyboardInterrupt:
        raise
    except:
        traceback.print_exc()
        continue

    try:
        print("Got connection from ",clientsock.getpeername)
        while True:
            data = clientsock.recv(4096)
            if not len(data):
                break
            clientsock.sendall(data)
    except (KeyboardInterrupt,SystemExit):
            raise
    except:
            traceback.print_exc()

    try:
        clientsock.close()
    except KeyboardInterrupt:
        raise
    except:
        traceback.print_exc()
View Code

相关文章:

  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2021-11-22
  • 2021-08-14
  • 2021-08-03
  • 2021-11-08
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2021-05-15
  • 2022-12-23
  • 2021-04-24
  • 2022-12-23
相关资源
相似解决方案