zoukankan      html  css  js  c++  java
  • socket error汇总

    1. socket.error: [Errno 98] Address already in use

    socket 绑定的地址正在使用,常见于非友好关闭套接字。

    解决办法:先关闭占用该地址的进程,假设端口号为10000,

      $ lsof -i:10000  

    然后设置allow_reuse_address = True。

    2. socket.error: [Errno 104] Connection reset by peer

    如果调用 read() 从 TCP 连接上接收数据并返回 -1,且 errno 为 104(Connection reset by peer),这通常表示对端程序没有关闭 socket 就直接退出了 (例如 core dump )。

    原因:对端程序没有显式调用 close() 来关闭一个 TCP 连接,那么在进程退出前,操作系统会释放相关的资源,包括关闭打开的文件描述符;但是这种情况下的关闭,只是发送一个 RESET 包就立刻结束,因此 read() 返回 -1 且 errno 为 104。而正常调用 close() 来关闭一个 socket, 会导致关闭连接的两次握手过程,这需要一点网络交互时间;这种情况下, read() 返回的是 0。

    因此,在开发过程中,遇到这种现象,可以判断对端程序是不是除了问题。

  • 相关阅读:
    XMU1349 xmu_1349
    字符串排序
    linux磁盘文件与目录管理系统(2)
    poj 3667 Hotel
    poj 3468 A Simple Problem with Integers
    linux文与目录管理
    Linux的磁盘与文件管理系统(1)
    hdu 1698 Just a Hook
    poj3225 Help with Intervals
    poj 2886Who Gets the Most Candies?
  • 原文地址:https://www.cnblogs.com/Amagasaki/p/3598030.html
Copyright © 2011-2022 走看看