ik maak een functie die simpelweg een meegegeven c-string (buffer) over een socket verstuurd, maar waarna write() is uitgevoerd en ik de buffer leeg wil maken met bzero krijg ik een segmentation fault.
Ik heb al heel veel geprobeerd om het op te lossen, bv 2 aparte buffers etc. Het vreemde vind ik dat ik de code letterlijk heb gekopieerd van een voorbeeld programma die hier te vinden is.
mijn functie:
Ik heb al heel veel geprobeerd om het op te lossen, bv 2 aparte buffers etc. Het vreemde vind ik dat ik de code letterlijk heb gekopieerd van een voorbeeld programma die hier te vinden is.
mijn functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| int vlc_message(char *buffer) {
int sockfd,n;
int portno = 21000;
struct sockaddr_in serv_addr;
struct hostent *server;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
server = gethostbyname("127.0.0.1");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR reading from socket");
close(sockfd);
return SUCCES;
} |