⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sever.cpp

📁 About communication in Vxworks system
💻 CPP
字号:
#include "Def.h"

int severTask(int sock)
{
	char szBuf[MAX_PACK_SIZE+1] = {'\0'};
	int ret = 0;
	
	while(true)
	{
		    ret = recv(sock, szBuf, MAX_PACK_SIZE, 0);
        if (ret == 0)        // client close
            break;
        else if (ret == SOCKET_ERROR)
        {
            printf("taskID: %d, recv() failed\n", taskIdSelf());
            break;
        }
        szBuf[ret] = '\0';
        printf("RECV: '%s'\n", szBuf);
	}
	
	return 0;
}

extern "C" int sever()
{
    int        sListen,
                  sClient;
    int           iAddrSize;
    int		        taskID;
    struct sockaddr_in local,
                       client;
                       
    sListen = socket(AF_INET, SOCK_STREAM, 0);
    if (sListen == SOCKET_ERROR)
    {
        printf("socket() failed\n");
        return 1;
    }
    // Select the local interface and bind to it
    //
    local.sin_addr.s_addr = htonl(INADDR_ANY);
    local.sin_family = AF_INET;
    local.sin_port = htons(PORT);

    if (bind(sListen, (struct sockaddr *)&local, 
            sizeof(local)) == SOCKET_ERROR)
    {
        printf("bind() failed\n" );
        return 1;
    }
    listen(sListen, MAX_CONNECT);
    //
    // In a continous loop, wait for incoming clients. Once one 
    // is detected, create a thread and pass the handle off to it.
    //    
    while (1)
    {
        iAddrSize = sizeof(client);
        sClient = accept(sListen, (struct sockaddr *)&client, &iAddrSize);
        if (sClient == INVALID_SOCKET)
        {        
            printf("accept() failed: %d");
            break;
        }
        printf("Accepted client: %s:%d\n", 
            inet_ntoa(client.sin_addr), ntohs(client.sin_port));

				char szTaskName[32];
				static int nTask = 0;
				sprintf(szTaskName, "Client %d", nTask++);
				taskID = taskSpawn(szTaskName, 100, 0, MEM_1M, (FUNCPTR)severTask, sClient, 2,3,4,5,6,7,8,9,10);
        if (taskID == ERROR)
        {
            printf("Create task failed");
            break;
        }
    }
    close(sListen);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -