0
int CreateSocket()
{
// SOCKET connectedSocket;
// SOCKADDR_IN addr;
// char buf[256];
// char buf2[300];
// Winsock starten
HANDLE h1,h2,h3;
double Task2ms_Raster, Task10ms_Raster, Task100ms_Raster ;
long rc;
SOCKET acceptSocket;
rc=startWinsock();
if(rc!=0)
{
printf("Fehler: startWinsock, fehler code: %d\n",rc);
return 1;
}
else
{
printf("Winsock gestartet!\n");
}
// Socket erstellen
acceptSocket=socket(AF_INET,SOCK_STREAM,0);
if(acceptSocket==INVALID_SOCKET)
{
printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("Socket erstellt!\n");
}
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
printf("Fehler: bind, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("Socket an port %d gebunden\n",port);
}
rc=listen(acceptSocket,10);
if(rc==SOCKET_ERROR)
{
printf("Fehler: listen, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("acceptSocket ist im listen Modus....\n");
}
connectedSocket=accept(acceptSocket,NULL,NULL);
if(connectedSocket==INVALID_SOCKET)
{
printf("Fehler: accept, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("Neue Verbindung wurde akzeptiert!\n");
// strcpy(buf,"Hallo wie gehts?");
// rc=send(acceptSocket,buf,9,0);
// Daten austauschen
while(rc!=SOCKET_ERROR)
{
rc=recv(connectedSocket,buf,256,0);
if(rc==0)
{
printf("Server hat die Verbindung getrennt..\n");
break;
}
if(rc==SOCKET_ERROR)
{
printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
break;
}
XcpIp_RxCallback((uint16) rc, (uint8*) buf, (uint16) port);
h1=TimerTask(2,TASK1,&Task2ms_Raster);
h2=TimerTask(10,TASK2,&Task10ms_Raster);
h3=TimerTask(100,TASK3,&Task100ms_Raster);
}
}
closesocket(acceptSocket);
closesocket(connectedSocket);
XcpIp_OnTcpCxnClosed((uint16) port);
WSACleanup();
return 0;
}
上述代碼是服務器代碼,並通過IP地址和端口號接受來自客戶端的連接。我接受連接並從客戶端接收數據。我想在後臺運行TimerTask,定時任務每2ms,10ms和100ms調用一個名爲TASK1,TASK2和TASK3的函數。那麼如何在後臺運行這些功能。請有人幫助我。如何並行運行任務?
你是什麼意思,通過'在後臺運行'?如果窗口在Windows中不可見,或者是否想要2個線程/進程同時運行? – maja
它應該與接收數據並行運行。 – user3252048