Last active
August 29, 2015 14:17
-
-
Save pineoc/6c80fef38b9c259e8976 to your computer and use it in GitHub Desktop.
week2 network programming, hello server & client code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <arpa/inet.h> | |
#include <sys/socket.h> | |
void error_handling(char* msg); | |
int main(int argc,char* argv[]) | |
{ | |
int sock; | |
struct sockaddr_in serv_addr; | |
char msg[30]; | |
int str_len; | |
if(argc!=3) | |
{ | |
printf("Usage : %s <IP> <port> \n",argv[0]); | |
exit(1); | |
} | |
sock = socket(PF_INET,SOCK_STREAM,0); | |
if(sock==-1) | |
error_handling("socket() err"); | |
memset(&serv_addr,0,sizeof(serv_addr)); | |
serv_addr.sin_family = AF_INET; | |
serv_addr.sin_addr.s_addr = inet_addr(argv[1]); | |
serv_addr.sin_port = htons(atoi(argv[2])); | |
if(connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))==-1) | |
error_handling("connect() err"); | |
str_len = read(sock,msg,sizeof(msg)); | |
if(str_len==-1) | |
error_handling("read() err"); | |
printf("msg from server : %s\n",msg); | |
close(sock); | |
return 0; | |
} | |
void error_handling(char* msg) | |
{ | |
fputs(msg,stderr); | |
fputs('\n',stderr); | |
exit(1); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
2 weeks server code | |
server, tcp | |
*/ | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <arpa/inet.h> | |
#include <sys/socket.h> | |
void error_handling(char* msg); | |
int main(int argc,char* argv[]) | |
{ | |
int serv_sock; | |
int clnt_sock; | |
struct sockaddr_in serv_addr; | |
struct sockaddr_in clnt_addr; | |
socklen_t clnt_addr_size; | |
char msg[]="hello world"; | |
if(argc!=2) | |
{ | |
printf("Usage : %s<port>\n",argv[0]); | |
exit(1); | |
} | |
serv_sock = socket(PF_INET,SOCK_STREAM,0); | |
if(serv_sock==-1) | |
error_handling("socket() err"); | |
memset(&serv_addr,0,sizeof(serv_addr)); | |
serv_addr.sin_family=AF_INET; | |
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); | |
serv_addr.sin_port = htons(atoi(argv[1])); | |
if(bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr))==-1) | |
error_handling("bind() err"); | |
if(listen(serv_sock,5)==-1) | |
error_handling("listen() err"); | |
clnt_addr_size = sizeof(clnt_addr); | |
clnt_sock = accept(serv_sock,(struct sockaddr*)&clnt_addr,&clnt_addr_size); | |
if(clnt_sock==-1) | |
error_handling("accept err"); | |
write(clnt_sock,msg,sizeof(msg)); | |
close(clnt_sock); | |
close(serv_sock); | |
return 0; | |
} | |
void error_handling(char* msg) | |
{ | |
fputs(msg,stderr); | |
fputs('\n',stderr); | |
exit(1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment