PDA

Orijinalini görmek için tıklayınız

eXTReMe Tracker
: C ile yazılmıs tpc sunucu örneği


em3
12-01-2007, 01:32 PM
#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;
}

ß@Y_M@NY@C
12-01-2007, 01:39 PM
ßana programlama ile ilgili yardımcı olmak istiyen arkadaslar varmı acaba Öğretmenim olmak istiyen varmı..?