(17/02/2009 02:13)
Socket Programlama
Uygulama süresince ilk önceliğimiz 2222 nolu port üzerinden çalışan bir sunucu programı oluşturmak olacak..
Kullanılan dil: C
Neyin nasıl oluşturulduğunu ilgili kodlarını vererek yazıyorum.Komple source en sonda vericem..
Port numarasının belirlenmesi :
CODE:
#define PORT 2222
int socx;
socx=socket(AF_INET,SOCK_STREAM,0) ;
if (socx<0)
{
perror("Soketi oluşturamadık hata var");
exit(1);
}
int socket(int domain,int type, int protocol);
if(bind(socx,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
exit(1);
}
if (listen(socx,BACKLOG)==-1)
{
perror("listen");
exit(1);
}
#define PORT 2222
struct sockaddr_in server_addr; /* Burada serverın adres bilgileri */
server_addr.sin_family=AF_INET; /* Adress Family burası */
server_addr.sin_port=htons(PORT); /*Port Number burası */
server_addr.sin_addr.s_addr=INADDR_ANY; /* IP Number buda */
int accept(int s, struct sockaddr *addr, int *addrlen);
thecoders:~> telnet thecoders.net 2222
int cx, client_size;
struct sockaddr_in client_addr; /* Client'in adres bilgisi burda */
client_size = sizeof(struct sockaddr_in);
cx=accept(socx,(struct sockaddr*)&client_addr,&client_size));
printf("&s sunucuya bağlı. n",inet_ntoa(Client_addr.sin_addr));
int send(int s,const void *msg, int len,unsigned int flags);
server.c -
/* oguz-coder */
/* thecoders */
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define PORT 2222 /* PORT Number*/
main(int argc, char *argv[])
{
int socx, cx;
struct sockaddr_in server_addr, client_addr;
int client_size;
char mesaj[32];
printf("%s %d nolu portunuz uzerinde calisiyor...n",argv[0],PORT);
if ((socx = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("Error : socket");
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(socx, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)
{
perror("Error : bind");
exit(1);
}
if (listen(socx, 1) == -1)
{
perror("Error : listen");
exit(1);
}
while(1)
{
client_size = sizeof(struct sockaddr_in);
if ((cx = accept(socx, (struct sockaddr *)&client_addr, &client_size)) == -1)
{
perror("Error : accept");
continue;
}
printf("%s sunucumuza baglandi...n",inet_ntoa(client_addr.sin_addr));
strcpy(mesaj,"Sunucuya bağlandın...n");
if (!fork())
{
if (send(cx,mesaj,sizeof(mesaj), 0) == -1) perror("Error : send");
close(cx);
exit(0);
}
close(fd);
while ( waitpid(-1,NULL,WNOHANG) > 0);
}
}
slm Oguzz
öncelikle anlatımın için cok sagol iyi bi calısma olmus..
benım takıldıgım kodu puty de derleyemedim 3 error verdi
server_.c:127: error: âfdâ undeclared (first use in this function)
server_.c:127: error: (Each undeclared identifier is reported only once
server_.c:127: error: for each function it appears in.)
ayrıca ben dosya transferi yapmak istiyorum udp ile soket programlamada nasıl yapacagımhakkında bilgi veriri misin
İyi günler öncelikle. Udp protokolü üzerinden dosya transferi için size örnek kod veriyorum.İncelerseniz sorunuza yanıt bulabilirsiniz.Yukarıdaki anlatımda işlemleri gerçekleştiren kodları verdim.Ben problem yaşamadım açıkçası.(linux'da)
Buyrun download linki
<<<İndir>>>
udp file transfer kodu için verdiğini linki yeniler misiniz.
Konu üstünden zaman geçmiş proje dosyası bende yok o yüzden ekleyemicem malesef..
