网络编程Winsock——listen
2013-12-02 18:53
344 查看
listen 监听即将到来的连接。返回值的错误码可以调用WSAGetLastError。这是个阻塞函数,没啥好说的。
下面是MSDN上的一个例子。
int listen( _In_ SOCKET s, _In_ int backlog//最大能连接的数量,SOMAXCONN将使用底层服务提供的值的。 );如果连接队列满了,就会导致客户端收到连接拒绝的错误(WSAECONNREFUSED)。
下面是MSDN上的一个例子。
#ifndef UNICODE #define UNICODE #endif #define WIN32_LEAN_AND_MEAN #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> // Need to link with Ws2_32.lib #pragma comment(lib, "ws2_32.lib") int wmain() { //---------------------- // Initialize Winsock WSADATA wsaData; int iResult = 0; SOCKET ListenSocket = INVALID_SOCKET; sockaddr_in service; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != NO_ERROR) { wprintf(L"WSAStartup() failed with error: %d\n", iResult); return 1; } //---------------------- // Create a SOCKET for listening for incoming connection requests. ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ListenSocket == INVALID_SOCKET) { wprintf(L"socket function failed with error: %ld\n", WSAGetLastError()); WSACleanup(); return 1; } //---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port for the socket that is being bound. service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(27015); iResult = bind(ListenSocket, (SOCKADDR *) & service, sizeof (service)); if (iResult == SOCKET_ERROR) { wprintf(L"bind function failed with error %d\n", WSAGetLastError()); iResult = closesocket(ListenSocket); if (iResult == SOCKET_ERROR) wprintf(L"closesocket function failed with error %d\n", WSAGetLastError()); WSACleanup(); return 1; } //---------------------- // Listen for incoming connection requests // on the created socket if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR) wprintf(L"listen function failed with error: %d\n", WSAGetLastError()); wprintf(L"Listening on socket...\n"); iResult = closesocket(ListenSocket); if (iResult == SOCKET_ERROR) { wprintf(L"closesocket function failed with error %d\n", WSAGetLastError()); WSACleanup(); return 1; } WSACleanup(); return 0; }
相关文章推荐
- WinSock网络编程实用宝典
- WinSock网络编程经络----读书笔记(1)
- WinSock网络编程学习(三)判断主机字节序程序
- socket网络编程之路 第四篇 ------winsock网络编程模型(1)之概述
- Winsock网络编程笔记(1)----入门
- Winsock网络编程客户端
- 基于VC的WinSock网络编程实用宝典
- Winsock网络编程快速入门
- WinSock网络编程实用宝典
- GroupWinsockListenTest.vbg - Winsock TCP C/S 网络程序编写 事例 - VB6 + Winsock - HackerJLY
- WinSock网络编程实用宝典
- WinSock网络编程经络----读书笔记(3)
- WinSock网络编程学习笔记(四)网络转换函数的实现
- WinSock网络编程快速入门
- winSock网络编程初体验
- WinSock网络编程实用宝典
- WinSock网络编程实用宝典
- WinSock网络编程实用宝典(一)
- WinSock网络编程学习笔记(五):查询主机信息
- WinSock网络编程学习笔记(八):测试bind程序