Visual C++でsocket通信




・クライアントプログラム
#include <cstdio>
#include <cstring>
#include <winsock2.h>

bool query(const char* message) {
  char host[] = "192.168.0.1";
   int  port   = 12345;

  WSADATA data;
   WSAStartup(MAKEWORD(2, 0), &data);

  struct sockaddr_in dst;
   memset(&dst, 0, sizeof(dst));
   dst.sin_addr.s_addr = inet_addr(host);
   dst.sin_port = htons(port);
   dst.sin_family = AF_INET;

  SOCKET clientsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
   if(clientsock < 0) {
       fprintf(stderr, "socket: failed");
       return false;
   }

  if(connect(clientsock, (struct sockaddr*)&dst, sizeof(dst)) < 0) {
       fprintf(stderr, "%d@%s: cannot connect", port, host);
       return false;
   }
   fprintf(stderr, "%d@%s: connected", port, host);

  send(clientsock, message, strlen(message), 0);

  char recvbuf[1024];
   recv(clientsock, recvbuf, 1024, 0);

  closesocket(clientsock);
   WSACleanup();

  return true;
}

int main(int argc, char* argv[]) {
  if(argc < 2) {
       fprintf(stderr, "usage: %s message", argv[0]);
       return 1;
   }

  if(query(argv[1])) {
       printf("Authentication was successful.");
   } else {
       printf("Authentication failed.");
   }

  return 0;
}

  • 最終更新:2017-05-13 22:24:14

このWIKIを編集するにはパスワード入力が必要です

認証パスワード