Created
November 30, 2016 09:57
-
-
Save ictlyh/6c087000728f21a8dfef6e003cf1e257 to your computer and use it in GitHub Desktop.
Socket demo.
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
// server.c | |
/* | |
* Demo of socket server. | |
* Build: gcc server.c -o server | |
* Run: ./server | |
*/ | |
#include <arpa/inet.h> | |
#include <netinet/in.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/socket.h> | |
#include <sys/types.h> | |
#include <time.h> | |
#include <unistd.h> | |
int main(int argc, char *argv[]) { | |
int listenfd = 0, connfd = 0; | |
struct sockaddr_in serv_addr; | |
char sendBuff[1025]; | |
time_t ticks; | |
listenfd = socket(AF_INET, SOCK_STREAM, 0); | |
memset(&serv_addr, '0', sizeof(serv_addr)); | |
memset(sendBuff, '0', sizeof(sendBuff)); | |
serv_addr.sin_family = AF_INET; | |
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); | |
serv_addr.sin_port = htons(5000); | |
bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); | |
printf("Bind success\n"); | |
listen(listenfd, 3); | |
printf("listening port 5000...\n"); | |
while (1) { | |
connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); | |
printf("Accepted...\n"); | |
int record_count = 1000; | |
int count = record_count; | |
strcpy(sendBuff, "1,luo\n"); | |
while (count--) { | |
write(connfd, sendBuff, strlen(sendBuff)); | |
} | |
close(connfd); | |
printf("Send count: %d", record_count); | |
} | |
return 0; | |
} | |
// client.c | |
/* | |
* Demo of socket client. | |
* Build: gcc client.c -o client | |
* Run: ./server | |
*/ | |
#include <arpa/inet.h> | |
#include <netinet/in.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/socket.h> | |
#include <sys/types.h> | |
#include <time.h> | |
#include <unistd.h> | |
int main(int argc, char *argv[]) { | |
int sockfd = 0, n = 0; | |
char recvBuff[1024]; | |
struct sockaddr_in serv_addr; | |
if (argc != 3) { | |
fprintf(stderr, "Usage: %s <ip of server> <port of server>\n",argv[0]); | |
return 1; | |
} | |
memset(recvBuff, '0',sizeof(recvBuff)); | |
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { | |
fprintf(stderr, "Error : Could not create socket \n"); | |
return 1; | |
} | |
memset(&serv_addr, '0', sizeof(serv_addr)); | |
serv_addr.sin_family = AF_INET; | |
serv_addr.sin_port = htons(atoi(argv[2])); | |
if (inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0) { | |
fprintf(stderr, "inet_pton error occured\n"); | |
return 1; | |
} | |
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { | |
fprintf(stderr, "Error : Connect Failed \n"); | |
return 1; | |
} | |
while (1) { | |
int recvsize = recv(sockfd, recvBuff, 1024, 0); | |
if (recvsize == 0) break; | |
else if (recvsize == -1) { | |
fprintf(stderr, "Read error\n"); | |
break; | |
} | |
recvBuff[recvsize] = '\0'; | |
fprintf(stdout, "%s", recvBuff); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment