Also, da ich persönlich nicht so auf ICQ stehe und auch nicht auf IRC ( man weiss ja nie wo die Daten landen ) hab ich einen messenger für die Konsole mit dem ich mich immer mit anderen unterhalten.
Was bei dem Programm fehlt ist noch ein Signal Handler um die Sockets zu schliessen wegen der while(1)
und noch eine erweiterung zum versenden und verschicken, wer den Code sieht wird schon wissen was ich meine
Also, für jeden der etwas privatsphäre haben will, hier der recht simple Code
Server :
Client
Viel spass damit...
PS : Das Problem hab ich aus versehen ausgewählt....
Was bei dem Programm fehlt ist noch ein Signal Handler um die Sockets zu schliessen wegen der while(1)
und noch eine erweiterung zum versenden und verschicken, wer den Code sieht wird schon wissen was ich meine
Also, für jeden der etwas privatsphäre haben will, hier der recht simple Code
Server :
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main(void)
{
int s;
int c;
int addr_length;
int bytes;
int i;
char buffer[4096];
struct sockaddr_in addr;
s = socket(PF_INET,SOCK_STREAM,0);
if(s == -1)
{
perror("socket() failed !\n");
exit(0);
}
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(4500);
addr.sin_family = AF_INET;
if(bind(s, (struct sockaddr*)&addr, sizeof(addr)) == -1)
{
perror("bind() failed !\n");
exit(0);
}
if(listen(s,3) == -1)
{
perror("listen() failed !\n");
exit(0);
}
addr_length = sizeof(addr);
c = accept(s, (struct sockaddr*)&addr,&addr_length);
printf("Client from %s is connecting...\n",inet_ntoa(addr.sin_addr));
if( c == -1)
{
perror("accept() failed !\n");
exit(0);
}
printf("Client %s is connected...\n",inet_ntoa(addr.sin_addr));
while(1)
{
bytes = recv(c,buffer,sizeof(buffer),0);
if(bytes == -1)
{
perror("recv() failed !\n");
exit(0);
}
else
{
buffer[bytes] = '\0';
printf("> %s\n",buffer);
}
i = 0;
printf("< ");
while( (buffer[i] = getchar()) != '\n')
i++;
buffer[i] = '\0';
bytes = send(c,buffer,strlen(buffer),0);
if(bytes == -1)
{
perror("send() failed !\n");
exit(0);
}
}
close(c);
close(s);
exit(0);
}
Client
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
int i = 0;
int s;
int bytes;
char buffer[4096];
struct sockaddr_in addr;
s = socket(AF_INET,SOCK_STREAM,0);
if(s == -1)
{
perror("socket() failed !\n");
exit(0);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(4500);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(connect(s,(struct sockaddr*)&addr,sizeof(addr)) == -1)
{
perror("connect() failed !\n ");
exit(0);
}
for(;;)
{
printf("< ");
while((buffer[i] = getchar()) != '\n')
i++;
buffer[i] = '\0';
bytes = send(s,buffer,strlen(buffer),0);
if(bytes == -1)
{
perror("send() failed !\n");
exit(0);
}
i = 0;
bytes = recv(s,buffer,sizeof(buffer),0);
buffer[bytes] = '\0';
printf("> %s\n",buffer);
}
close(s);
exit(0);
}
Viel spass damit...
PS : Das Problem hab ich aus versehen ausgewählt....