ok... also ich finde keinen weg mehr... das ist von mir:
socket_client.h:
Code:
#include <sys/socket.h>
#include <sys/types.h>
class client
{
public:
struct sockaddr_in dest_addr; // contains data to connect to the server
int my_socket;
int main();
int create_socket(char * controller);
int connect_server(char * controller, char * desti_ip);
};
socket_client.cpp:
Code:
#include <fcntl.h>
#include <errno.h>
#include <stropts.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <iostream.h>
#include <string>
#include "socket_client.h"
#define MY_PORT 65023
main()
{
int i = 0;
int z;
client my_object;
char controller[100];
char desti_ip[15];
cout << "Client is starting, please wait..." << endl;
cout << "Please insert the server address:" << endl;
cin >> desti_ip;
while(i == 0)
{
my_object.create_socket(controller);
z = strcmp(controller, "successfull"); // 0 == true
if(z != 0) { cout << controller << endl; break; }
my_object.connect_server(controller, desti_ip);
z = strcmp(controller, "successfull");
if(z != 0) { cout << controller << endl; break; }
i++;
}
return 0;
}
int client::create_socket(char * controller)
{
if(my_socket = socket(AF_INET, SOCK_STREAM, 0) == -1)
{
strcpy(controller, "Socket error!");
return 0;
}
else
{
cout << "Client has created a socket..." << endl;
strcpy(controller, "successfull");
return 0;
}
}
int client::connect_server(char * controller, char * desti_ip)
{
// Infos for connecting to server
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(MY_PORT);
dest_addr.sin_addr.s_addr = inet_addr(desti_ip);
cout << "Client is trying to connect to: " << inet_ntoa(dest_addr.sin_addr) << "..." << endl;
if(connect(my_socket, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1)
{
strcpy(controller, "Connection error!");
perror("connect");
return 0;
}
else
{
cout << "Client is now connected to the server: " << inet_ntoa(dest_addr.sin_addr) << endl;
strcpy(controller, "successfull");
return 0;
}
}
mit dem output:
Code:
Client is starting, please wait...
Please insert the server address:
Client has created a socket...
Client is trying to connect to: 127.0.0.1...
connect: Socket operation on non-socket
Connection error!
das ist von nem kollegen:
Code:
/* client.c */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define BUF 1024
#define Port 65001
int main (int argc, char **argv) {
int create_socket;
char *buffer=malloc(BUF);
struct sockaddr_in address;
int size;
if( argc < 2 ){
printf("Usage: %s ServerAdresse\n", *argv);
exit(EXIT_FAILURE);
}
printf ("\e[2J");
if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) > 0)
printf ("Socket wurde angelegt\n");
address.sin_family = AF_INET;
address.sin_port = htons (Port);
inet_aton (argv[1], &address.sin_addr);
if (connect ( create_socket,
(struct sockaddr *) &address,
sizeof (address)) == 0)
printf ("Verbindung mit dem Server (%s) hergestellt\n",
inet_ntoa (address.sin_addr));
do {
size = recv(create_socket, buffer, BUF-1, 0);
if( size > 0)
buffer[size] = '\0';
printf ("Nachricht erhalten: %s\n", buffer);
printf("Befehl eingeben: ");
fgets (buffer, BUF, stdin);
send(create_socket,buffer,strlen(buffer),0);
printf("Nachricht gesendet\n");
} while (strcmp (buffer, "quit\n") != 0);
close (create_socket);
return EXIT_SUCCESS;
}
und das geht -.- kann da einer helfen
Lesezeichen