wsasocket

CString str;
GetDlgItemText(IDC_StartServer, str)
if (str=="开始")
{
SetDlgItemText(IDC_StartServer,"停止");

SOCKET sockSvc;//服务器端socket
SOCKET sockConnect; //连接用的socket
WORD wVersionRequested;//定义socket1.1或者socket2.0
WSADATA wsaData; //定义装载socket版本的变量
int err; //错误变量
wVersionRequested = MAKEWORD(2,2); //定义连接为socket2.0
err = WSAStartup(wVersionRequested, &wsaData); //装载socket2.0支持
if(0 == err)//判断是否装载成功
{
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)//判断版本号,是否和定义的一样
{
WSACleanup(); //若出问题,卸载支持,并结束程序返回-1
}

sockSvc = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
}

}
else
{
SetDlgItemText(IDC_StartServer,"开始");
/* if(WSARecv(AcceptSocket,&DataBuf,1,&dwRecvBytes,&Flags,
& AcceptOverlapped, NULL) == SOCKET_ERROR)
{

// 返回WSA_IO_PENDING是正常情况,表示IO操作正在进行,不能立即完成
// 如果不是WSA_IO_PENDING错误,就大事不好了~~~~~~!!!
if(WSAGetLastError() != WSA_IO_PENDING)
{
//那就只能关闭大吉了
closesocket(AcceptSocket);
WSACloseEvent(EventArray[dwEventTotal]);
}

}
*/
}

时间: 2024-10-05 20:55:33

wsasocket的相关文章

WSASocket()创建套接字不成功解决方法

这几天我在写一个模仿windows自带的ping程序,可是套接字总是创建不成功,在网上找了一些资料最后总算把问题解决了,现在总结一下. 解决方法:以管理员运行VS就行了我的是vs2013,vs2010也一样. /*Winsock 初始化*/ if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { //如果初始化不成功则报错,GetLastError()返回错误信息 printf("WSAStartup() failed:%d]\n",

Socket()与WSASocket()的区别

socket()   创建一个通讯端点并返回一个套接口.但是在socket库中例程在应用于阻塞套接口时会阻塞.     WSASocket()的发送操作和接收操作都可以被重叠使用.接收函数可以被多次调用,发出接     收缓冲区,准备接收到来的数据.发送函数也可以被多次调用,组成一个发送缓冲区队列.     可是socket()却只能发过之后等待回消息才可做下一步操作!   Header: Declared in Winsock2.h.  Library: Use Ws2_32.lib. SOC

WSASocket与socket

WSASocket是Windows专用,支持异步操作:socket是unix标准,只能同步操作. Socket可采用多线程实现非阻塞 *******原文:http://hi.baidu.com/%B9%A6%BB%D4cgh/blog/item/c610f713abbb0609b9127b99.html******/ winsock是socket的windows平台的实现.winsock是微软专门为windows操作系统开发的socket网络编程接口,而socket是通用网络编程接口.socke

WSASocket()函数使用解析

详情参阅:https://msdn.microsoft.com/en-us/library/ms742212(VS.85).aspx WSASocket() 简述 The WSASocket function creates a socket that is bound to a specific transport-service provider. 和socket的区别: winsock是socket的windows平台的实现. winsock是微软专门为windows操作系统开发的sock

Windows异步套接字(WSASocket)

异步套接字: 如果使用阻塞的套接字的话,在控制台下还好!如果是WIN32程序的话,那么就容易造成界面的假死,因为接收函数一直等待有消息进来之后才会被返回!所以此时界面一直属于假死的状态,如果你乱动的话,那么就容易真死了.解决办法如下: 第一:使用多线程技术,多线程和SOCKET结合的话,可以使用单独一个线程来接收消息.这样即使接收函数阻塞了也不会影响其他线程,例如界面线程.但是如果使用多线程的话,就必须要考虑到多线程之间同步的问题,以及临界资源的问题. 第二:使用异步套接字.但是使用异步套接字的

socket阻塞与非阻塞,同步与异步、I/O模型,select与poll、epoll比较

1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端: 同步:      所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事. 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步:      异步的概念和同步相对.当c端一个异步过程调用发出后,调

最精简的IOCP封装

最精简的IOCP封装,DELPHI XE8直接编译通过.Winsock2.pas即使用DELPHI自带的,相信XE7也能编译,或者XE6,XE5也能. 单说Winsock2.pas,我见过无数种版本的了,各版本WINSOCK 2的API的方法的参数的数据类型居然都有出入,使用不同人封装的Winsock2.pas源码都要进行相应的调整, 否则无法编译通过,我认为还是使用DELPHI官方的最为靠谱. 要用于实际应用的话,还要进行“粘包处理”. 我在DELPHI XE8下测试OK. unit Unit

Windows 网络编程(2)--重叠I/0模型

5).重叠I/O模式(overlapped) 常用函素: 1.WSASocket : 创建套接字 2.TCP WSASend WSARecv 3.UDP: WSASendTo WSARecvFrom 4.AccepEx (Mswsock.lib库导出) WSAIoctl 5.数据类型 WSAOVERLAPPED (wsaoverlapped) 函数: WSAGetOverlappedResult 使用: 缓冲区对象 typedef struct _BUFFER_OBJ { OVERLAPPED

IOCP扩展方法AcceptEx, DisconnectEx, GetAcceptExSockaddr用法示例

这篇文章记录了我刚接触IOCP模型时的理解,对于初学者,应该算不错的调试程序,仅有一个400多行代码的dpr文件,可以直接用WriteLn输出信息,前提是会用delphi建立Console Application,当然你也可以很容易的就改成了C控制台程序或是其它语言.附加代码中有详细的注释,如果你已有IOCP经验,那么请不用在此浪费时间,这个示例不适合你.示例仅展示了IOCP中AcceptEx, DisconnectEx, GetAcceptExSockaddr等的用法.在文章最后有推荐的两个连