#include <iostream>
#include <WinSock2.h> using namespace std; #pragma comment(lib, "ws2_32") int main(int argc, char **argv)
{
WSADATA wsaData;
WSAStartup(WINSOCK_VERSION, &wsaData); USHORT uPort = ;
SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sListen)
{
cout << "socket error : " << GetLastError() << endl;
return ;
} SOCKADDR_IN sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(uPort);
sin.sin_addr.S_un.S_addr = INADDR_ANY; if (SOCKET_ERROR == bind(sListen, (PSOCKADDR)&sin, sizeof(sin)))
{
cout << "Bind error : " << WSAGetLastError() << endl;
closesocket(sListen);
WSACleanup();
return ;
} if (SOCKET_ERROR == listen(sListen, ))
{
cout << "listen error : " << WSAGetLastError() << endl;
closesocket(sListen);
WSACleanup();
return ;
} fd_set fdSocket;
FD_ZERO(&fdSocket);
FD_SET(sListen, &fdSocket); while (TRUE)
{
fd_set fdRead = fdSocket;
int iRet = select(, &fdRead, NULL, NULL, NULL);
if (iRet > )
{
for (size_t i = ; i < fdSocket.fd_count; i++)
{
if (FD_ISSET(fdSocket.fd_array[i], &fdRead))
{
if (fdSocket.fd_array[i] == sListen)
{
if (fdSocket.fd_count < FD_SETSIZE)
{
SOCKADDR_IN addrRemote;
int iAddrLen = sizeof(addrRemote);
SOCKET sNew = accept(sListen, (PSOCKADDR)&addrRemote, &iAddrLen);
FD_SET(sNew, &fdSocket);
cout << "接收到连接(" << inet_ntoa(addrRemote.sin_addr) << ")" << endl;
}
else
{
cout << "连接太多!" << endl;
continue;
}
}
else
{
char szText[];
int iRecv = recv(fdSocket.fd_array[i], szText, strlen(szText), );
if (iRecv > )
{
szText[iRecv] = '\0';
cout << "接收到数据:" << szText << endl;
}
else
{
closesocket(fdSocket.fd_array[i]);
FD_CLR(fdSocket.fd_array[i], &fdSocket);
}
}
}
}
}
else
{
cout << "select error : " << WSAGetLastError() << endl;
closesocket(sListen);
WSACleanup();
break;
}
} shutdown(sListen, SD_RECEIVE);
WSACleanup(); return ;
}

select Demo的更多相关文章

  1. [js开源组件开发]模拟下拉选项框select

    模拟下拉选项框select 在css3流行的情况下,下拉框还是无法满足PD的需求,所以有了autosearch,有了模拟下拉框.效果如下图: select DEMO请案例点击这里查看.http://w ...

  2. css select 样式列表-----另一种样式列表

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org ...

  3. MYSQLI DEMO

    1.Select // DEMO mysqli连接方式参考 $db = new mysqli("localhost:3306", "root", "& ...

  4. Select multiple多选上移、下移

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  5. Layui select下拉框改变之 change 监听事件(转)

    在layui中使用 jquery 触发select 的 change事件无效 使用layui.use监听select事件 <select lay-filter="demo" ...

  6. eui & search select

    eui & search select https://element.eleme.io/#/zh-CN/component/select demo <template> < ...

  7. .NET 开源SqlServer ORM框架 SqlSugar 3.0 API

    3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSuga ...

  8. Asp.net Core的代码移植技巧,半天将SqlSugarORM转成Core

    .net  core中有哪些被抛弃的类 1.DataTable DataRow SqlDataAdapter DataRow DataColumn DataColumn 虽然这些类不是我ORM核心功能 ...

  9. sql 随笔 2015-07-02

    sql 自定义函数 --检查函数是否存在 if exists (select * from dbo.sysobjects where id = object_id(N'dbo.pTitleCase') ...

随机推荐

  1. matlab 图像分块及恢复

    1. block_divide % 返回的块向量构成的矩阵,其维度信息为 K^2 * N,每一列由块构成的列向量 function P = block_divide(I, K) r = size(I, ...

  2. Apache2.4.25 VirtualHost rewrite_module

    LoadModule rewrite_module libexec/apache2/mod_rewrite.so Include /private/etc/apache2/extra/httpd-vh ...

  3. tomcat添加跨域访问功能-Access-Control-Allow-Origin:*

    目标:tomcat服务器提供的接口,不能在其他域中访问的时候,需要增 Access-Control-Allow-Origin:* 直接配置的方法很多,但是我一个没有成功过,所以只能自己写拦截器了. 1 ...

  4. 仿照Android的池化技术

    /** * 仿照Android池化技术 * @author fgtian * */ public class ObjectCacheTest { public static class ObjectI ...

  5. String方法总结

    蓝背景为与Array相同的方法 一.字符方法 charAt(index):返回在指定位置的字符. var str="abcdefg"; //undefined str[0] //& ...

  6. 怎么会float交换器int

    最近突然想知道编译器整数浮球开关是如何实现的,现在很多信息,但遗憾的是甚至没有这方面的记录,所以我决定实现自己的简单的整数浮点转 随着float开启int为例  double转int类似 在做强转之前 ...

  7. Redis入门手册

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...

  8. 1-6 WebAPI基础和演示项目搭建

    启动项目的时候 在控制台用dotnet MsgService.dll的方式启动. 在program.cs文件下做如下修改: 实现在控制台 自定义ip和端口,修改之后有将项目重新生成,在控制台启动项目, ...

  9. VS2005下第一个ATL

    作者:kagula 日期:  2008-9-2 环境: [1]VisualStudio2005简体中文版(必需已经安装C语言开发环境支持) [2]WinXP+SP3 读者要求: 初步使用过Visual ...

  10. AngularJS ng-if使用

    示例中,根据ng-if指令显示不同任务状态,以及判断任务是否可以操作 <div ng-app="NgifDemoApp" ng-controller="NgifDe ...