- Κώδικας: Επιλογή όλων
cd Desktop

Συντονιστής: konnn
cd Desktop
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include <netinet/in.h>
int main(int argc , char* arg[] )
{
int sockfd, new_sockfd, sport;
char buf[256];
int n;
if (argc < 2)
{fprintf(stderr,"ERROR, port not exist\n");}
struct sockaddr_in servaddr, peer_addr;
sockfd=socket(AF_INET, SOCK_STREAM,0);
if (sockfd < 0)
error("Socket error");
bzero((char *) &servaddr, sizeof(servaddr));
sport = atoi(arg[1]);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = INADDR_ANY;
servaddr.sin_port = htons(sport);
if (bind(sockfd, (struct sockaddr *) &servaddr,
sizeof(servaddr)) < 0)
error("Binding Error");
listen(sockfd,5);
new_sockfd = accept(sockfd,
(struct sockaddr *) &peer_addr,
sizeof(peer_addr));
if (new_sockfd < 0)
error(" Disconnected");
bzero(buf,256);
n = read(new_sockfd,buf,256);
if (n < 0) error("Reading Error");
printf("Here is the message: %s\n",buf);
n = write(new_sockfd,"Your message is:",100);
if (n < 0) error("Writing error");
return 0;
}
Nisok έγραψε:Το segmentation fault (9 στις 10), γενικά σημαίνει ότι έχεις κάποιο δείκτη σε κάτι, είτε κάποιο vector και βγαίνεις εκτός ορίων.
Γενικά καλό είναι να χρησιμοποιείς το try / catch όταν δουλεύεις δυναμικά.
Αν αναβάσεις όλο το κώδικά σου θα μπορέσω να βοηθήσω περισσότερο.
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<strings.h>
int main()
{
int sockfd_cl,n;
char buf[256];
sockfd_cl=socket(AF_INET, SOCK_STREAM,0);
struct sockaddr_in servaddr;
bzero((char *) &servaddr, sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=6789;
servaddr.sin_addr.s_addr= inet_addr("xxx.xxx.xxx.xxx");
connect(sockfd_cl, &servaddr , sizeof(servaddr));
if (connect(sockfd_cl,&servaddr,sizeof(servaddr)) < 0)
error("Disconnected");
printf("Type your message: ");
bzero(buf,256);
fgets(buf,256,stdin);
n = write(sockfd_cl,buf,strlen(buf));
if (n < 0)
error("ERROR");
bzero(buf,256);
n = read(sockfd_cl,buf,256);
if (n < 0)
error("ERROR ");
printf("%s\n",buf);
return 0;
}
void error(char* message);
void error(char* message){
perror(message);
exit(0);
}
connect(sockfd_cl,(struct sockaddr*)&servaddr,sizeof(servaddr));
gcc -o test.o -Wall test.c