|
Basit bir C ile yazılmış tcp sunucu örneği
|
|
03-10-2010, 01:30 PM
Mesaj: #1
|
|||
|
|||
|
Basit bir C ile yazılmış tcp sunucu örneği
Programın orjinali çok ufak değişiklikler yapılarak aktarılmıştır.
Bu kod *nix sistemlerde çalışmaktadır. Derlenmesi: gcc -o sunucu sunucu.c sunucu.c dosyasının içeriği: #include <stdio.h> #include <string.h> #include <netdb.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/wait.h> #define PORT 9999 #define LISTQUEUE 5 main(int argc, char *argv[]) { int sockfd, new_fd; struct sockaddr_in server_addr, client_addr; int client_size; char buffer[1024]; printf("%s %d portu uzerinde calismaya basladi...\n",argv[0],PORT); if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { perror("bind"); exit(1); } if (listen(sockfd, LISTQUEUE) != 0) { perror("listen"); exit(1); } while(1) { client_size = sizeof(struct sockaddr_in); if((new_fd=accept(sockfd,(struct sockaddr*)&client_addr,&client_size)) == -1) { perror("accept"); exit(1); } printf("%s sunucumuza baglandi...\n",inet_ntoa(client_addr.sin_addr)); /* Istemciye mesaj gonderme */ memset(&buffer, 0, sizeof(buffer)); strcpy(buffer,"OK\n"); /* strcat(buffer,(char *) inet_ntoa(client_addr.sin_addr)); */ if (send(new_fd,&buffer, strlen(buffer), 0) == -1) perror("send"); /* if (recv(new_fd,&buffer, strlen(buffer)-1, 0) == -1) perror("recv"); */ recv(new_fd,&buffer, strlen(buffer)+1021, 0); /* printf("Alinan yanit: %s \n", buffer); */ printf("%s",inet_ntoa(client_addr.sin_addr)); printf(": %s \n", buffer); close(new_fd); } close(sockfd); while (waitpid(-1,NULL,WNOHANG) > 0); return 0; } Özdemir Şarman aka (Charmant-zavanetratan) |
|||
'Basit bir C ile yazılmış tcp sunucu örneği' Konusunu Paylaş |

Arama
Üye Listesi
Takvim
Yardım














