OSDN Git Service

_socket_server_test_sample.cpp
authormyun2 <myun2@nwhite.info>
Sun, 8 Jul 2012 17:33:25 +0000 (02:33 +0900)
committermyun2 <myun2@nwhite.info>
Sun, 8 Jul 2012 17:33:25 +0000 (02:33 +0900)
roast/test/socket_test/_socket_server_test_sample.cpp [new file with mode: 0644]

diff --git a/roast/test/socket_test/_socket_server_test_sample.cpp b/roast/test/socket_test/_socket_server_test_sample.cpp
new file mode 100644 (file)
index 0000000..f087715
--- /dev/null
@@ -0,0 +1,77 @@
+#include "roast/net/socket.hpp"
+#include <stdio.h>
+#include <winsock2.h>
+
+#define BUF 256
+
+void main( void )
+{
+       //WASDATA\8d\\91¢\91Ì WSAStartup\82Ì\8c\8b\89Ê\82ð\8ai\94[
+       WSADATA wsaData;
+       //WinSock\82Ì\83o\81[\83W\83\87\83\93
+       WORD winSockVer = MAKEWORD(2 , 2);
+       //\82¢\82í\82¸\82Æ\82µ\82ê\82½\83\\83P\83b\83g
+       SOCKET sock , clientSock;
+       
+       struct sockaddr_in addr;
+       struct sockaddr_in client;
+       int len;
+       
+       //\83\81\83b\83Z\81[\83W\8fW
+       char* welcome = "\82æ\82¤\82±\82»\82¨\82¢\82Å\82­\82¾\82³\82¢\82Ü\82µ\82½!";
+       
+       //\8eó\90M\83\81\83b\83Z\81[\83W\97p\83o\83b\83t\83@
+       char* recBuf     = (char*)calloc( BUF , sizeof(char) );
+       int recErrMsg   = 1;
+
+       //\83\\83P\83b\83g\82ð\8f\89\8aú\89»\82·\82é
+       if (0 != WSAStartup(winSockVer , &wsaData)){
+               printf("WSAStartup\8e¸\94s");
+               exit(1);
+       }
+
+       //\83\\83P\83b\83g\82Ì\8dì\90¬\82É\8e¸\94s\82·\82é\82Æ -1 \82ð\95Ô\82·
+       if (-1 == (sock = socket(AF_INET, SOCK_STREAM, 0))){
+               printf("\83\\83P\83b\83g\82Ì\8f\89\8aú\89»\82É\8e¸\94s");
+               exit(1);
+       }
+       
+       //\83\\83P\83b\83g\82Ì\90Ý\92è
+       addr.sin_family                          = AF_INET;
+       addr.sin_port                            = htons(8000);
+       addr.sin_addr.S_un.S_addr        = INADDR_ANY;
+       
+       //\83\\83P\83b\83g\82ð\83o\83C\83\93\83h\81i\83|\81[\83g\82âIP\83A\83h\83\8c\83X\82ð\8a\84\82è\93\96\82Ä\82é\81j
+       bind(sock , (struct sockaddr *)&addr , sizeof(addr));
+       
+       //\91Ò\82¿\8eó\82¯
+       if (-1 == listen(sock , SOMAXCONN)){
+               printf("listen\82É\8e¸\94s");
+               exit(1);
+       }else
+               printf("\91Ò\82¿\8eó\82¯\8aJ\8en\n");
+       
+       //\83N\83\89\83C\83A\83\93\83g\82©\82ç\90Ú\91±
+       len = sizeof(client);
+       clientSock = accept(sock , (struct sockaddr *)&client , &len);
+       printf("%s(\83|\81[\83g:%u)\82©\82ç\90Ú\91±\n" ,
+        inet_ntoa(client.sin_addr) , ntohs(client.sin_port));
+       
+       //\83f\81[\83^\91\97\90M
+       if (-1 == send(clientSock , welcome , strlen(welcome) , 0)){
+               printf("\83f\81[\83^\91\97\90M\82É\8e¸\94s");
+               exit(1);
+       }
+       while(recErrMsg > 0){
+               recErrMsg = recv(clientSock , recBuf , BUF ,0);
+               printf("%s ",recBuf);
+       }
+       if (recErrMsg == 0)
+               printf("\83N\83\89\83C\83A\83\93\83g\82ª\90Ø\92f\82µ\82½\82æ\82¤\82Å\82·\n");
+       else if (recErrMsg == -1)
+               printf("\8eó\90M\82É\8e¸\94s\n");
+       
+       //\83\\83P\83b\83g\82Ì\83N\83\8a\81[\83i\83b\83v
+       WSACleanup();
+}
+