#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. cordova通过指纹插件进行指纹验证

    原文:cordova通过指纹插件进行指纹验证 版权声明:本文为博主原创文章,转载须注明出处,博客地址:https://blog.csdn.net/wx13227855087 https://blog. ...

  2. Dictionary实现(收藏的)

    源文献:https://www.cnblogs.com/InCerry/p/10325290.html 对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可 ...

  3. 【u253】售货厅

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 售票厅出售关于音乐会的票,取代原来的卖一张票的形式,而是一组座号连续的票.售票室已经收到很多预订.每个 ...

  4. MySQL旧版本ORDER BY 方法

    MySQL 的order by 它涉及到三个参数:A. sort_buffer_size 排序缓存.B. read_rnd_buffer_size 第二次排序缓存.C. max_length_for_ ...

  5. 微软 2018 年第一笔收购:文件存储公司 Avere Systems

    微软 2018 年第一笔收购:文件存储公司 Avere Systems 2018 年 1 月 4 日, 9:47 上午 · Picturepan2 微软今天宣布收购文件存储公司 Avere Syste ...

  6. spring mybatis circular reference

    摘要: Error creating bean with name 'XXX': Requested bean is currently in creation: Is there an unreso ...

  7. WPF窗口继承实现统一风格的自定义窗口

    如何实现一个窗口的风格(style),让所有的窗口都继承这样同样的风格,包括标题栏,放大.缩小和关闭按钮. 那么,我们可不可以就建立一个Base窗口,然后将这个窗口的风格给设计好之后,所有的窗口都继承 ...

  8. node lesson3

    var express = require('express'); var superagent = require('superagent'); var cheerio = require('che ...

  9. 在WPF中制作正圆形公章

    原文:在WPF中制作正圆形公章 之前,我利用C#与GDI+程序制作过正圆形公章(利用C#制作公章 ,C#制作公章[续])并将它集成到一个小软件中(个性印章及公章的画法及实现),今天我们来探讨一下WPF ...

  10. 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例

    原文:深入WPF中的图像画刷(ImageBrush)之1--ImageBrush使用举例 昨天我在<简述WPF中的画刷(Brush)  >中简要介绍了WPF中的画刷的使用.现在接着深入研究 ...