Bu Konuyu Okuyanlar: 1 ZiyaretÇi
Cevapla 
 
DeÄŸerlendir:
  • 0 Oy - 0 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5
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)
Web Sayfasını Ziyeret Edin Tüm Mesajlarını Bul
Alıntı Yaparak Cevapla
Cevapla 


  • RSS
  • del.icio.us
  • StumbleUpon
  • Digg
  • TwitThis
  • Facebook
  • Reddit
  • Google
  • YahooMyWeb
  • E-mail

Forum Atla:


İletişim | SistemOdasi.net | Yukarıya dön | İçeriğe Dön | RSS
site ekle
Zirve100
Toplist