zoukankan      html  css  js  c++  java
  • win8 下面 listen 的队列长度貌似无效了 上c/s 代码 并附截图,有图有真相

    #include <WinSock2.h>
    #include <stdio.h>
    #include <windows.h>
    
    DWORD ServerRoutine(LPVOID lpParam);
    
    #pragma comment(lib,"Ws2_32.lib")
    
    #define IP "127.0.0.1"
    #define PORT 3333
    
    static int counter = 1;
    int main()
    {
    	//declare varible
    	WSADATA ws;
    	SOCKET local,acceptSocket;
    	sockaddr_in localAddr;
    	unsigned int unAddrLen = sizeof(localAddr);
    	int nRet;
    	///init
    
    	WSAStartup(MAKEWORD(2,2),&ws);
    	local = socket(AF_INET,SOCK_STREAM,0);
    	if(local == INVALID_SOCKET)
    	{
    		return -1;
    	}
    	localAddr.sin_addr.s_addr = inet_addr(IP);
    	localAddr.sin_family = AF_INET;
    	localAddr.sin_port = htons(PORT);
    	memset(localAddr.sin_zero,0,sizeof(localAddr.sin_zero));
    
    	nRet = bind(local,(sockaddr *)&localAddr,unAddrLen);
    
    	if(nRet)
    	{
    		return -2;
    	}
    	listen(local,5);
    	while(1)
    	{
    		acceptSocket = accept(local,(sockaddr *)&localAddr,(int *)&unAddrLen);
    		if(acceptSocket != INVALID_SOCKET)
    		{
    			CreateThread(NULL,0,(LPTHREAD_START_ROUTINE )ServerRoutine,&acceptSocket,0,NULL);
    		}
    	}
    	if(local)
    	{
    		closesocket(local);
    	}
    	if(acceptSocket)
    	{
    		closesocket(acceptSocket);
    	}
    	
    	return 0;
    
    }
    DWORD ServerRoutine(LPVOID lpParam)
    {
    	counter ++;
    	SOCKET  s =* (SOCKET *)(lpParam);
    	int nRet ;
    	char num[10] = "";
    	char buf[1024]="hello world! coming from server!";
    	itoa(counter,num,10);
    	strcat(buf,num);
    	while(1)
    	{
    		nRet = send(s,buf,strlen(buf)+1,0);
    		Sleep(500);
    	}
    
    	return 0;
    }
    

    client 代码:

    #include <WinSock2.h>
    #include <stdio.h>
    #include <windows.h>
    
    
    
    #pragma comment(lib,"Ws2_32.lib")
    
    #define IP "127.0.0.1"
    #define PORT 3333
    
    
    int main()
    {
    	//declare varible
    	WSADATA ws;
    	SOCKET server;
    	sockaddr_in serverAddr;
    	unsigned int unAddrLen = sizeof(serverAddr);
    	int nRet;
    	///init
    
    	WSAStartup(MAKEWORD(2,2),&ws);
    	server = socket(AF_INET,SOCK_STREAM,0);
    	if(server == INVALID_SOCKET)
    	{
    		return -1;
    	}
    	serverAddr.sin_addr.s_addr = inet_addr(IP);
    	serverAddr.sin_family = AF_INET;
    	serverAddr.sin_port = htons(PORT);
    	memset(serverAddr.sin_zero,0,sizeof(serverAddr.sin_zero));
    
    	//nRet = bind(server,(sockaddr *)&serverAddr,unAddrLen);
    	//int n = WSAGetLastError();
    	//if(nRet)
    	//{
    	//	return -2;
    	//}
    
    	nRet = connect(server,(sockaddr *)&serverAddr,int(unAddrLen));
    
    	if(nRet)
    	{
    		return -3;
    	}
    	char buf[1024]="";
    	while(1)
    	{
    		memset(buf,0,1024);
    		nRet = recv(server,buf,sizeof(buf),0);
    		printf("%s
    ",buf);
    		Sleep(1000);
    	}
    	closesocket(server);
    	return 0;
    
    }
    

     counter  记录了客户端的个数,listen的队列长度为 5。

    看截图:事实上可以更多我试过超过12的

  • 相关阅读:
    星球基地
    手机评价
    2018
    mongoDB(Window)
    linux
    【整理】Java 11新特性总结
    【整理】Java 10新特性总结
    【整理】Java 9新特性总结
    【整理】Java 8新特性总结
    Java -- 内部类(二)
  • 原文地址:https://www.cnblogs.com/S-volcano/p/3302823.html
Copyright © 2011-2022 走看看