zoukankan      html  css  js  c++  java
  • Socket通信-服务端

    WSADATA wsd;
    SOCKET sClient;
    SOCKET sServer;
    SOCKADDR_IN addrServ;
    char chRcvBuf[RECV_BUF_SIZE];

    	if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
    	{
    		Sleep(5000);
    		continue;
    	}
    	sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (INVALID_SOCKET == sServer)
    	{
    		WSACleanup();
    		Sleep(5000);
    		continue;
    	}
    
    	addrServ.sin_family = AF_INET;
    	addrServ.sin_port = htons(4999);
    	addrServ.sin_addr.s_addr = INADDR_ANY;
    	int nretVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN));
    	if (SOCKET_ERROR == nretVal)
    	{
    		closesocket(sServer);
    		WSACleanup();
    		Sleep(5000);
    		continue;
    	}
    
    	nretVal = listen(sServer, 1);
    	if (SOCKET_ERROR == nretVal)
    	{
    		closesocket(sServer);
    		WSACleanup();
    		Sleep(5000);
    		continue;
    	}
    
    	sockaddr_in addrClient;
    	int addrClientlen = sizeof(addrClient);
    	sClient = accept(sServer, (sockaddr FAR*)&addrClient, &addrClientlen);
    	if (INVALID_SOCKET == sClient)
    	{
    		closesocket(sServer);
    		WSACleanup();
    		Sleep(5000);
    		continue;
    	}
    
    	ZeroMemory(chRcvBuf, RECV_BUF_SIZE);
    	nretVal = recv(sClient, chRcvBuf, RECV_BUF_SIZE, 0);
    	if (SOCKET_ERROR == nretVal)
    	{
    		closesocket(sServer);
    		closesocket(sClient);
    		WSACleanup();
    		Sleep(5000);
    		continue;
    	}
    
    	if (strlen(chRcvBuf) > 0 && strlen(chRcvBuf) < RECV_BUF_SIZE)
    		ParseCmd(chRcvBuf);
    
    	closesocket(sServer);
    	closesocket(sClient);
    	WSACleanup();
  • 相关阅读:
    函数的调用惯例
    docker 强制删除镜像
    docker 安装 tomcat8
    阿里云 maven仓库地址配置
    ubuntu 18.04 安装搜狗输入法
    centos 监控进程,并自动重启
    intellj idea show "run dashboard" panel
    Centos7 服务器启动jar包
    maven centos7 环境变量
    linux关于IP,端口,防火墙相关命令
  • 原文地址:https://www.cnblogs.com/Mojito2020/p/13713029.html
Copyright © 2011-2022 走看看