相关疑难解决方法(0)

TCP连接错误115正在进行操作原因是什么?

我的应用程序创建了一个TCP连接,这是正常的工作.但是在一个网络服务器上有很多IP说

  • 174.XXX
  • 54.xxx喜欢这个

当调用TCP连接(非阻塞,超时为60秒)到IP 174.X.X.X 总是成功的.但TCP连接到同一服务器的ip 54.x.x.x 失败(大多数情况下)正在进行errno 115 measn操作.

你能否解释一下errno 115的可能原因是什么?

操作系统:Linux

我的TCP连接代码如下

tcp_connect(......)
{

  int iValOpt = 0;  
  int iLength= 0;

  fcnt((int)(long)SockID,F_SETFL_O_NONBLOCK);

  ret = connect (sockID,(struct sockaddr*)pstSockAdr,uiSockLen);

  if (ret < 0)
  {

        if (errno == EINPROGRESS)
        {
                stTv.tv_sec = 60;
                stTv.tv_usec = 0;
                FD_ZERO(&write_fd);
                FD_SET(sockID,&write_fd);

                iLength = sizeof(int);

                if (0 < select (sockID+1) , NULL,&write_fd,NULL,&stTv);

                {
                        if(0 > getsockopt(sockID,SOL_SOCKET,SO_ERROR,(void*)(&iValOpt),&iLength))
                        {
                                return -1
                        }

                        if (0 != iValOpt)
                        {
                                return -1;
                        }


                        return success;
                }

                else
                {
                        return -1; …
Run Code Online (Sandbox Code Playgroud)

c networking network-programming tcp errno

15
推荐指数
2
解决办法
5万
查看次数

如何使用非阻塞套接字连接()?

在Python中,我想socket.connect()在设置为非阻塞的套接字上使用。当我尝试这样做时,该方法总是抛出一个BlockingIOError. 当我忽略错误(如下所示)时,程序将按预期执行。当我在连接后将套接字设置为非阻塞时,没有错误。当我使用 select.select() 确保套接字可读或可写时,我仍然收到错误。

测试服务器.py

import socket
import select

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setblocking(0)

host = socket.gethostname()
port = 1234

sock.bind((host, port))
sock.listen(5)

while True:
    select.select([sock], [], [])
    con, addr = sock.accept()
    message = con.recv(1024).decode('UTF-8')
    print(message)
Run Code Online (Sandbox Code Playgroud)

测试客户端.py

import socket
import select

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setblocking(0)

host = socket.gethostname()
port = 1234

try:
    sock.connect((host, port))
except BlockingIOError as e:
    print("BlockingIOError")

msg = "--> From the client\n"

select.select([], [sock], [])
if sock.send(bytes(msg, 'UTF-8')) == len(msg):
    print("sent ", …
Run Code Online (Sandbox Code Playgroud)

python sockets networking nonblocking

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

networking ×2

c ×1

errno ×1

network-programming ×1

nonblocking ×1

python ×1

sockets ×1

tcp ×1