Host:
#include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include "statics.h" #include <sys/time.h> int main() { long sec = 0; long usec = 0; struct timeval begin,end; gettimeofday(&begin, NULL); int fixSock, accSock; struct sockaddr_in srvrAdd, clntAdd; int sin_size; unsigned short portnum=0x8888; message msg; printf("Hello,welcome to my server !\r\n"); fixSock = socket(AF_INET, SOCK_STREAM, 0); if(-1 == fixSock) { perror("socket fail"); return -1; } printf("socket ok !\r\n"); int on; setsockopt(fixSock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); bzero(&srvrAdd,sizeof(struct sockaddr_in)); srvrAdd.sin_family=AF_INET; srvrAdd.sin_addr.s_addr=htonl(INADDR_ANY); srvrAdd.sin_port=htons(portnum); if(-1 == bind(fixSock,(struct sockaddr *)(&srvrAdd), sizeof(struct sockaddr))) { perror("bind fail"); return -1; } printf("bind ok !\r\n"); if(-1 == listen(fixSock,5)) { perror("listen fail"); return -1; } printf("listen ok\r\n"); sin_size = sizeof(struct sockaddr_in); gettimeofday(&end, NULL); sec = end.tv_sec - begin.tv_sec; usec = end.tv_usec - begin.tv_usec; accSock = accept(fixSock, (struct sockaddr *)(&clntAdd), &sin_size); gettimeofday(&begin, NULL); if(-1 == accSock) { printf("accept fail !\r\n"); return -1; } printf("accept ok!\r\nServer start get connect from %#x : %#x\r\n",ntohl(clntAdd.sin_addr.s_addr),ntohs(clntAdd.sin_port)); while(1){ if(-1 == read(accSock, &msg, sizeof(msg))) { perror("write fail"); return -1; } if(0 == msg.type){ int *arr = (int*)msg.data; if(msg.length == 1){ if(9999 == arr[0]){ break; } } } } close(accSock); close(fixSock); gettimeofday(&end, NULL); printf("%ld s, %ld us", end.tv_sec - begin.tv_sec + sec, end.tv_usec - begin.tv_usec + usec); return 0; }
Phi:
#include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include "statics.h" int mConnect(char *ip){ int sockid; struct sockaddr_in sera, clia; unsigned short port = 0x8888; sockid = socket(AF_INET, SOCK_STREAM, 0); if( -1 == sockid){ return -1; } bzero(&sera, sizeof(struct sockaddr_in)); sera.sin_family = AF_INET; sera.sin_addr.s_addr = inet_addr(ip); sera.sin_port = htons(port); if(-1 == connect(sockid, (struct sockaddr *)(&sera), sizeof(struct sockaddr))){ return -1; } return sockid; } int mSend(int sockid, message *msg){ int bytes; if(-1 == ( bytes = write( sockid, msg, sizeof(message) ) )){ return -1; } return bytes; } int main() { int sockid; sockid = mConnect("10.4.14.100"); message msg; printf("Hello,welcome to client !\r\n"); msg.type = 0; msg.length = 1; for(int i = 0; i < 10000; ++i){ ((int*)msg.data)[0] = i; mSend(sockid, &msg); } getchar(); close(sockid); return 0; }
38630 |
37492 |
38840 |
37680 |
77976 |
36907 |
AVG 44587.5 |
VAR 268073450.3 |
MID 38155 |