| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
TCPIP-serveriAkiro 28.05.01 18:47 Pieni esimerkki kuinka TCP/IPtä käytetään win32:ssa, talk-serverin alku.
/* Ikävä kyllä täysin kommentoimaton vieläkin*/ #define _MT_ #include <stdio.h> #include <windows.h> #include <winsock2.h> #include <process.h> void serverthread(void *); int main() { char *protocol,*client_ip; int sd,ns,addrlen; struct sockaddr_in serv,cli; struct servent *ser; struct hostent *cli_ent; WSADATA wsaData; WSAStartup(0x0101, &wsaData); if((sd = socket(AF_INET,SOCK_STREAM,0)) < 0) { printf("error in socket()\n"); exit(2); } serv.sin_family = AF_INET; serv.sin_port = htons(10666); serv.sin_addr.s_addr = INADDR_ANY; // bzero(&(serv.sin_zero),8); if(bind(sd, (struct sockaddr *) &serv,sizeof(serv)) < 0) { closesocket(sd); printf("Error in bind()"); exit(3); } printf("Serveri toiminassa\n"); while (1){ if(listen(sd,2) != 0) { printf("Error in listen()"); exit(4); } addrlen = sizeof(cli); if((ns = accept(sd,(struct sockaddr *)&cli,&addrlen)) < 0) { printf("Error in accept()"); exit(5); } client_ip = inet_ntoa(cli.sin_addr); cli_ent = gethostbyaddr((char *)&cli.sin_addr.S_un.S_addr,4,PF_INET); printf("Host: %s[%s], Port: %d\n",cli_ent->h_name,client_ip,cli.sin_port); _beginthread(serverthread,4096,(void *) ns); } closesocket(sd); WSACleanup(); exit(0); } void serverthread(void *param) { int socket,antal; char cbuf[99]; socket = (int) param; printf("Klientti kutsuu:\n"); do{ if((antal = recv(socket,&cbuf,99,0)) < 0) { printf("Error in read()"); exit(5); } cbuf[antal] = '\0'; printf("Cli: %s\n",cbuf); if(strcmp(cbuf,"slut")){ printf("Kirjoita vastaus:\n>"); gets(cbuf); send(socket,&cbuf,strlen(cbuf)+1,0); } }while (strcmp(cbuf,"slut")); printf("Lopetus...\n"); closesocket(socket); _endthread(); } pikkumyy 14:04 29.4.03 Vai että "slut".. Akirohan on hävyttömäksi ruvennut ZcMander 19:50 30.8.03 HYVÄ |
![]() Haku
|