Есть клиент на c и сервер на питоне. Клиент оптравляет текст и получает ответ. Но по непонятной причине до сервера доходят только первые 4 символа сообщения.
char* checkPermission(const char* message)
{
FILE *fp; // Settings file
char ADDRESS[100]; // Server IP address
char PORT[100]; // Server port
char str[300]; // Temporary string
int port; // Server port, converted to integer
// Trying to open the settings file
if((fp = fopen("/etc/g3/server.conf", "r")) == NULL)
{
printf("Cannot open server.conf\n");
exit(4);
}
// Getting address and port from the file
while(!feof(fp))
{
char* name;
char* param;
fgets(str, 300, fp);
name = strtok(str, "=");
param = strtok(NULL, "=");
if(name != NULL && param != NULL)
{
if(!strcmp(name, "HOST"))
strcpy(ADDRESS, param);
if(!strcmp(name, "PORT"))
strcpy(PORT, param);
}
}
fclose(fp);
ADDRESS[strlen(ADDRESS)-1] = 0;
PORT[strlen(PORT)-1] = 0;
port = atoi(PORT);
char buf[1024];
int sock; // Socket
struct sockaddr_in addr;
// Creating socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0)
{
printf("Error opening socket\n");
exit(1);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ADDRESS);
// Connectiong socket
if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
{
printf("Error connecting to server on ");
printf("%s:%s\n", ADDRESS, PORT);
exit(2);
}
// Sending information about the command to check
send(sock, message, sizeof(message), 0);
// Receiving answer
recv(sock, buf, sizeof(buf), 0);
close(sock);
return buf;
}