hello,
i am trying to implement a tcp client and tcp server. i am able to establish the connection but when i send a message from client, the server is not able to receive it. here is my code below, if you can plz let me know what i am doi ng wrong, i wud really appreciate it. i think there is a problem in my server implementation
Client:
Server:Code:#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 3490 int main(int argc, char *argv[]) { struct sockaddr_in server_info; struct hostent *he; int socket_fd,num; char *buffer; if (argc != 2) { fprintf(stderr, "Usage: client hostname\n"); exit(1); } if ((he = gethostbyname(argv[1]))==NULL) { fprintf(stderr, "Cannot get host name\n"); exit(1); } if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0))== -1) { fprintf(stderr, "Socket Failure!!\n"); exit(1); } memset(&server_info, 0, sizeof(server_info)); server_info.sin_family = AF_INET; server_info.sin_port = htons(PORT); server_info.sin_addr = *((struct in_addr *)he->h_addr); if (connect(socket_fd, (struct sockaddr *)&server_info, sizeof(struct sockaddr))<0) { //fprintf(stderr, "Connection Failure\n"); perror("connect"); exit(1); } buffer = "Hello World!! I am networking!!\n"; if ((send(socket_fd,buffer, sizeof(buffer),0))== -1) { fprintf(stderr, "Failure Sending Message\n"); exit(1); } else { printf("Message being sent: %s\n",buffer); } close(socket_fd); }
i would really appreciate some help.Code:#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 3490 #define BACKLOG 10 int main() { struct sockaddr_in server; struct sockaddr_in dest; int status,socket_fd, client_fd,size,num; char *buffer; int yes =1; memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = INADDR_ANY; if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0))== -1) { fprintf(stderr, "Socket failure!!\n"); exit(1); } if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) { perror("setsockopt"); exit(1); } if ((status = bind(socket_fd, (struct sockaddr *)&server, sizeof(struct sockaddr )))== -1) { //sizeof(struct sockaddr) fprintf(stderr, "Binding Failure\n"); exit(1); } if ((listen(socket_fd, BACKLOG))== -1){ fprintf(stderr, "Listening Failure\n"); exit(1); } while(1) { size = sizeof(dest); if ((client_fd = accept(socket_fd, (struct sockaddr *)&dest, &size)==-1)) { fprintf(stderr,"Accept Failure\n"); } printf("Server got connection from client %s\n", inet_ntoa(dest.sin_addr)); buffer = "Hello World!! I am networking!!\n"; if ((num = recv(client_fd, buffer, 1024,0))== -1) { fprintf(stderr,"Error in receiving message!!\n"); exit(1); } buffer[num] = '\0'; printf("Message received: %s\n", buffer); close(client_fd); //close(socket_fd); } }



1Likes
LinkBack URL
About LinkBacks


