Pode me ajudar, se poder deixa uma msg aqui, q eu te deixo o codigo.
Claro, estamos aqui para ajudar.
Mas você deve, no mínimo, saber quais são as dúvidas que você tem, senão fica difícil ajudar. É pré-requisito ter lido a respeito dos conceitos básicos e do fluxo que será necessário implementar para efetuar a comunicação cliente/servidor.
Talvez você não esteja conseguindo implementar simplesmente porque não leu nenhum tutorial e nem a documentação das funções de socket. Se você já leu, então certamente você tem, no mínimo, condições de fazer perguntas a respeito. Se não leu, precisa ler. Se não leu porque a documentação das funções está escrita em inglês, então vai ter (por exemplo) que pedir para alguém traduzir para você, não tem mágica.
Não dá para aprender essas coisas "por osmose".
No meu caso, por exemplo, aprendi lendo tutoriais e exemplos na Internet e lendo a documentação de sockets do próprio compilador.
De qualquer forma, estou postando aqui uma implementação de um "time server" (e de um cliente), extraído do FreeBSD Developer's Handbook - Chapter 7 - Sockets.
Mas veja bem, estou postando esse código apenas para você ter uma idéia, e lembre-se que não é uma implementação para Windows (os includes são diferentes, por exemplo). É um código bastante simples e direto, bom para estudar. Ah, e ler o conteúdo desse link aí acima seria uma ótima idéia, pois explica as coisas em detalhes.
Client:
/*
* daytime.c
*
* Programmed by G. Adam Stanislav
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
register int s;
register int bytes;
struct sockaddr_in sa;
char buffer[BUFSIZ+1];
if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket"
return 1;
}
bzero(&sa, sizeof sa);
sa.sin_family = AF_INET;
sa.sin_port = htons(13);
sa.sin_addr.s_addr = htonl((((((192 << 8) | 43) << 8) | 244) << 8) | 18);
if (connect(s, (struct sockaddr *)&sa, sizeof sa) < 0) {
perror("connect"
close(s);
return 2;
}
while ((bytes = read(s, buffer, BUFSIZ)) > 0)
write(1, buffer, bytes);
close(s);
return 0;
}
Server:
/*
* daytimed - a port 13 server
*
* Programmed by G. Adam Stanislav
* June 19, 2001
*/
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BACKLOG 4
int main() {
register int s, c;
int b;
struct sockaddr_in sa;
time_t t;
struct tm *tm;
FILE *client;
if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket"
return 1;
}
bzero(&sa, sizeof sa);
sa.sin_family = AF_INET;
sa.sin_port = htons(13);
if (INADDR_ANY)
sa.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(s, (struct sockaddr *)&sa, sizeof sa) < 0) {
perror("bind"
return 2;
}
switch (fork()) {
case -1:
perror("fork"
return 3;
break;
default:
close(s);
return 0;
break;
case 0:
break;
}
listen(s, BACKLOG);
for (; {
b = sizeof sa;
if ((c = accept(s, (struct sockaddr *)&sa, &b)) < 0) {
perror("daytimed accept"
return 4;
}
if ((client = fdopen(c, "w") == NULL) {
perror("daytimed fdopen"
return 5;
}
if ((t = time(NULL)) < 0) {
perror("daytimed time"
return 6;
}
tm = gmtime(&t);
fprintf(client, "%.4i-%.2i-%.2iT%.2i:%.2i:%.2iZ\n",
tm->tm_year + 1900,
tm->tm_mon + 1,
tm->tm_mday,
tm->tm_hour,
tm->tm_min,
tm->tm_sec);
fclose(client);
}
}