1 / 5

Socket Programming Sample Code - simple chat client and server

Socket Programming Sample Code - simple chat client and server. ee122 sp05 daron spektor. #include <stdio.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> int main() { int serverfd, clientfd; struct sockaddr_in myaddress; struct sockaddr_in cliaddress;

niyati
Télécharger la présentation

Socket Programming Sample Code - simple chat client and server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Socket ProgrammingSample Code-simple chat client and server ee122 sp05daron spektor

  2. #include <stdio.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> int main() { int serverfd, clientfd; struct sockaddr_in myaddress; struct sockaddr_in cliaddress; char buf[200]; myaddress.sin_family = AF_INET; myaddress.sin_port = htons(12205); myaddress.sin_addr.s_addr = htonl(INADDR_ANY); memset(&(myaddress.sin_zero), 0, 8); serverfd = socket(AF_INET, SOCK_STREAM, 0); bind(serverfd, (struct sockaddr *)&myaddress, sizeof(struct sockaddr)); listen(serverfd, 2); while (1) { int addrlen = sizeof(struct sockaddr); int len; clientfd = accept(serverfd, (struct sockaddr *)&cliaddress, &addrlen); printf("[[connected to %s]]\n", inet_ntoa(cliaddress.sin_addr)); while (len = recv(clientfd, buf, 200, 0)) { puts(buf); } printf("connection reset\n"); close(clientfd); } return 0; } TCP one-way chat server

  3. TCP one-way chat client #include <stdio.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> int main() { int serverfd; struct sockaddr_in serveraddress; char buf[200]; serveraddress.sin_family = AF_INET; serveraddress.sin_port = htons(12205); serveraddress.sin_addr.s_addr = inet_addr("127.0.0.1"); memset(&(serveraddress.sin_zero), 0, 8); serverfd = socket(AF_INET, SOCK_STREAM, 0); connect(serverfd, (struct sockaddr*)&serveraddress, sizeof(struct sockaddr)); while (fgets(buf, 200, stdin)) { send(serverfd, buf, strlen(buf)+1, 0); } close(serverfd); return 0; }

  4. server code with error checking #include <stdio.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> int main() { int serverfd, clientfd, temp; struct sockaddr_in myaddress; struct sockaddr_in cliaddress; char buf[200]; serverfd = socket(AF_INET, SOCK_STREAM, 0); if (serverfd<0) { perror("socket error"); exit(1); } myaddress.sin_family = AF_INET; myaddress.sin_addr.s_addr = htonl(INADDR_ANY); myaddress.sin_port = htons(12205); memset(&(myaddress.sin_zero), 0, 8); temp = bind(serverfd, (struct sockaddr *)&myaddress, sizeof(struct sockaddr)); if (temp<0) { perror("bind error"); exit(1); } if (listen(serverfd, 5)<0) { perror("problem listening"); exit(1); } while (1) { int addrlen = sizeof(struct sockaddr); int len; if ((clientfd = accept(serverfd, (struct sockaddr *)&cliaddress, &addrlen))<0) { perror("accept error"); exit(1); } printf("[[connected to %s]]\n", inet_ntoa(cliaddress.sin_addr)); while (len = recv(clientfd, buf, 200, 0)) { puts(buf); } close(clientfd); if (len==0) { printf("connection reset\n"); } else if (len<0) { perror("recv error"); exit(1); } } return 0; }

  5. client code with error checking #include <stdio.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> int main() { int serverfd; struct sockaddr_in serveraddress; char buf[200]; if ((serverfd = socket(AF_INET, SOCK_STREAM, 0))<0) { perror("socket error"); exit(1); } serveraddress.sin_family = AF_INET; serveraddress.sin_port = htons(12205); serveraddress.sin_addr.s_addr = inet_addr("127.0.0.1"); memset(&(serveraddress.sin_zero), 0, 8); if ((connect(serverfd, (struct sockaddr*)&serveraddress, sizeof(struct sockaddr)))<0) { perror("connect error"); exit(1); } while (fgets(buf, 200, stdin)) { send(serverfd, buf, strlen(buf)+1, 0); } close(serverfd); return 0; }

More Related