Witam, probuje wykonuja komunikacje serwer - klient. Klient przesyla wiadomosc do serwera, wszystko działa poprawnie i wyswietla wiadomosc w terminalu, ale gdy probuje odeslac do klienta to w kliencie nic się nie dzieje w terminalu. W czym może być problem? Odsylam wiadomość na adres klienta ale klient z się zawiesza na recvfrom i nic nie otrzymuje.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/un.h>
#include <netinet/udp.h>
#include <arpa/inet.h>
int main()
{
unlink("tmp/unix1");
int server = socket(AF_UNIX, SOCK_DGRAM, 0);
// bind
struct sockaddr_un address, client;
address.sun_family = AF_UNIX;
strcpy(address.sun_path, "/tmp/unix12");
char buff[1024] = "Message to server";
char rcvMsg[1024];
int len = sizeof(client);
int bindc = bind(server, (struct sockaddr *)&address, sizeof(address));
if(bindc==-1) {
perror("bind");
return -1;
}
while(1) {
if(recvfrom(server, rcvMsg, 1024, 0, (struct sockaddr *) &client,
&len) == -1){
perror("recvfrom");
return -1;
}
printf("from client: %s\n", rcvMsg);
sendto(server, buff, 1024, 0, (struct sockaddr *)&client, sizeof(client));
}
close(server);
return 0;
}
Klient:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/un.h>
#include <netinet/udp.h>
#include <arpa/inet.h>
int main()
{
int server = socket(AF_UNIX, SOCK_DGRAM, 0);
// bind
struct sockaddr_un address, client;
address.sun_family = AF_UNIX;
strcpy(address.sun_path, "/tmp/unix12");
char buff[1024] = "Message to server";
char rcvMsg[1024];
int len = sizeof(address);
sendto(server, buff, 1024, 0, (struct sockaddr *)&address, sizeof(address));
if(recvfrom(server, rcvMsg, 1024, 0, NULL, NULL) == -1) {
perror("rcv");
return -1;
}
printf("%s\n\n", rcvMsg);
close(server);
return 0;
}