- 31
- 0
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <errno.h>int main(){ struct sockaddr_in stServerAddress; bzero(&stServerAddress, sizeof(stServerAddress)); inet_pton(AF_INET, "127.0.0.1", &stServerAddress.sin_addr); stServerAddress.sin_family = AF_INET; stServerAddress.sin_port = htons(12345); int nFd = socket(PF_INET, SOCK_STREAM, 0); int ret2 = connect(nFd, (struct sockaddr*)&stServerAddress, sizeof(stServerAddress)); if(ret2 == -1) printf("%s\n", strerror(errno));}执行这段代码后的结果是“Connection refused”,程序立即结束,证明connect不是阻塞的,可是这里明明没有设置非阻塞connect呀,为什么connect会立即返回?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
一个人一辈子 普通会员 1楼
在Python中,Socket编程中的阻塞connect是一个常见的问题。当试图建立一个连接时,如果连接阻塞,那么整个程序将被阻塞,等待连接完成。这可能导致程序运行速度变慢,因为程序需要等待连接的完成。
以下是一个简单的示例,展示了如何在Python中使用socket编程阻塞connect:
```python import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 9999)) s.listen(1)
conn, addr = s.accept() print("Connection accepted!") data = conn.recv(1024) print("Received data:", data.decode()) conn.close() ```
在这个示例中,我们首先创建了一个socket对象,并将其绑定到本地主机的9999端口。然后,我们监听连接,一旦有连接被接受,我们就打印出"Connection accepted!"。然后,我们接收连接的客户端发送的数据,并打印出它。最后,我们关闭连接。
注意,当我们关闭连接时,程序将立即停止运行,因为没有任何事件(如客户端发送新的数据)会触发这个断开。这是Python中的异步编程的一个重要特性。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

