首页 > 建站学院 > 服务器配置 > linux socket设置阻塞,如何将socket设置为非阻塞模式

linux socket设置阻塞,如何将socket设置为非阻塞模式

来源:整理 时间:2025-07-18 22:32:02 编辑:设置教程 手机版

本文目录一览

1,如何将socket设置为非阻塞模式

linux平台上可以调用fcntl()或者ioctl()函数;windows上可调用ioctlsocket函数;具体参数设置请参考系统编程手册。
我用tcp/ip socket进行通信,代码从网上拷的,如下 private sub listen() dim strsend as... 阻塞是因为客户端没发送过来还是服务端没接收到呢?怎么设置socket的阻塞模式呢? ...

如何将socket设置为非阻塞模式

2,Socket阻塞长连接

长连接就是客户端和服务器端建立了socket 连接以后,该连接在使用完毕以后,并不马上关闭掉,而是保持此连接,如果下一次需要和服务器进行通信,就立即启用该连接 进行数据的通信。当然,保持长连接,必须检查该连接的状态(是否断开)。
别忘了设置socket模式!int imode = 1; //0:阻塞 1:非阻塞ioctlsocket(m_psock,fionbio, (u_long far*) &imode);//非阻塞设置

Socket阻塞长连接

3,如何把该socket设置为阻塞模式

提供借鉴:阻塞SOCKET的非阻塞连接//用非阻塞方式连接,这样的话,一旦连接不上,界面不会出现一段较长时间不响应。int tcp_connect(char *ip, int port, struct timeval *timeout) struct linger opt; struct sockaddr_in sin; struct linger lg; int sock; int nodelay; unsigned long ul; fd_set fdConnect; memset(&lg, 0, sizeof(struct linger)); sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == INVALID_SOCKET) TRACE("socket errno:\t%d\n", WSAGetLastError()); return -1; } ul = 1; if (ioctlsocket(sock, FIONBIO, &ul) == SOCKET_ERROR) TRACE("ioctlsocket errno:\t%d\n", WSAGetLastError()); goto err_exit; } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.S_un.S_addr = inet_addr(ip); sin.sin_port = htons(port);if (connect(sock, (struct sockaddr*)&sin, sizeof(sin)) == 0) goto ONCE_SUC; } FD_ZERO(&fdConnect); FD_SET((unsigned int)sock, &fdConnect); if (select(0, 0, &fdConnect, 0, timeout) <= 0) TRACE("select errno:\t%d\n", WSAGetLastError()); goto err_exit; }ONCE_SUC: ul = 0; if (ioctlsocket(sock, FIONBIO, &ul) == SOCKET_ERROR) TRACE("ioctlsocket errno:\t%d\n", WSAGetLastError()); goto err_exit; } /*消除滞留*/ memset(&opt, 0, sizeof(struct linger)); if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&opt, sizeof(opt)) == SOCKET_ERROR) TRACE("SO_LINGER errno:\t%d\n", WSAGetLastError()); } /*禁用合并*/ nodelay = 1; if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*) &nodelay, sizeof(int)) == SOCKET_ERROR) TRACE("TCP_NODELAY errno:\t%d\n", WSAGetLastError()); } return sock;err_exit: closesocket(sock); return -1;}
WSAAsyncSelect(SOCKET, HWND, UM_SOCKET, 0);设置回阻塞模式。DWORD dwFlag = 0;ioctlscoekt(SOCKET,FIONBIO, &dwFlag);设置回阻塞模式。
我用tcp/ip socket进行通信,代码从网上拷的,如下 private sub listen() dim strsend as... 阻塞是因为客户端没发送过来还是服务端没接收到呢?怎么设置socket的阻塞模式呢? ...

如何把该socket设置为阻塞模式

文章TAG:linuxsocket设置阻塞linux如何将socket设置为非阻塞模式

最近更新

  • 鬼画符电影网站建设需要鬼画符电影网站建设需要

    古装电影...为什么用mp4电子书下载完小说后就看不到所有的鬼角色了?没什么建设性的。求几部恐怖暴力片,求最好的恐怖片,中国僵尸鬼片,呵呵~楼主找对人了~我总结了几部好看的经典恐怖片~都.....

    【服务器配置 】 日期:2025-07-18

  • 象山企业网站设计,专业企业网站设计象山企业网站设计,专业企业网站设计

    如何搭建企业网站?下面品牌易众邦为需要扩大品牌的企业解答一些关于网站建设、企业网站建设、如何做好企业网站建设、如何做好网站建设的信息。重庆网站建设老渔歌网分析企业网站制作的.....

    【服务器配置 】 日期:2025-07-18

  • 怎样设置公司共享网络,怎样设置局域网共享怎样设置公司共享网络,怎样设置局域网共享

    怎样设置局域网共享2,怎样做局域网共享3,局域网共享设置4,如何将宽带共享5,局域网共享怎么设置1,怎样设置局域网共享GUEST帐户要开启3.点击“开始→运行”,在“运行”对话框中输入“GPEDIT.M.....

    【服务器配置 】 日期:2025-07-18

  • 如何设置vim,linux下如何调用vim如何设置vim,linux下如何调用vim

    linux下如何调用vim2,linux系统下怎么使用vim3,如何设置vim的默认选项4,vim编辑器怎么用啊5,在windows上怎么用vim1,linux下如何调用vim首先你要安装vim如果是ubuntu的话apt-getinstallvim.....

    【服务器配置 】 日期:2025-07-18

  • 263 outlook设置,263net 个人邮箱outlook设置出问题263 outlook设置,263net 个人邮箱outlook设置出问题

    263net个人邮箱outlook设置出问题2,我用outlook设置263的企业邮箱设置按照263的步骤pop1pop3,点击微软outlook有一个outlook设置是什么意思4,企业邮箱如何设置outlook263企业邮箱如何设置.....

    【服务器配置 】 日期:2025-07-18

  • 背包客网站设计素材,网站设计资料背包客网站设计素材,网站设计资料

    背包客应该如何选择背包?背包客、流浪者、旅行者出行,背包客如何选择太阳能充电设备,做一个背包客需要做哪些准备?2021年最适合徒步旅行的手表(背包客有户外特定功能)现在很流行。随着科技.....

    【服务器配置 】 日期:2025-07-17

  • 阜新县水务公司招聘网站,克拉玛依市自来水公司招聘阜新县水务公司招聘网站,克拉玛依市自来水公司招聘

    汉沽龙达水务还在招人吗?宝武水务公司有编制吗?宝武水务公司有编制。企业位于上海市宝山区牡丹江路1508号1号楼。其行业为水的生产和供应,经营范围包括:水处理设备、环境科技领域的技术开.....

    【服务器配置 】 日期:2025-07-17

  • 青岛哪家网站建设公司好,北京网站建设公司哪个好青岛哪家网站建设公司好,北京网站建设公司哪个好

    青岛网络建设公司怎么找青岛网站建设公司的电话?青岛君哲互联网科技有限公司在哪里?JD.COM淘宝哪个网站建设公司比较好?青岛开发区网站建设。哪个公司好?在建设企业网站之前,最重要的是做好.....

    【服务器配置 】 日期:2025-07-17