掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ソケット通信について (ID:61215)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
サーバー側を考えていますのでネットより以下の サンプルプログラムを入手して作成しています。 ですが内容としまして、クライアントがサーバに接続し、1秒ごとにメッセージを送信するというプログラムになっています。実際に私が行いたいことはいか構造体の情報をソケット通信で取得しその情報によって処理を行いたいと考えています。 また、クライアント側にも以下構造体の情報を変更してソケット通信を行いたいと考えています。どのように送信、受信を行えばよいのでしょうか?教えていただけないでしょうか? Typedef struct { WORD wVer; WORD wCmd; WORD wRsp; WORD wDmy1: }PrcHead_t, *LPPrcHead; ********************ここからサンプルプログラム #include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> #define BUFFER_SIZE 256 int main() { /* ポート番号、ソケット */ unsigned short port = 9876; int srcSocket; // 自分 int dstSocket; // 相手 /* sockaddr_in 構造体 */ struct sockaddr_in srcAddr; struct sockaddr_in dstAddr; int dstAddrSize = sizeof(dstAddr); /* 各種パラメータ */ int numrcv; char buffer[BUFFER_SIZE]; /************************************************************/ /* Windows 独自の設定 */ WSADATA data; WSAStartup(MAKEWORD(2,0), &data); /* sockaddr_in 構造体のセット */ memset(&srcAddr, 0, sizeof(srcAddr)); srcAddr.sin_port = htons(port); srcAddr.sin_family = AF_INET; srcAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* ソケットの生成 */ srcSocket = socket(AF_INET, SOCK_STREAM, 0); /* ソケットのバインド */ bind(srcSocket, (struct sockaddr *) &srcAddr, sizeof(srcAddr)); /* 接続の許可 */ listen(srcSocket, 1); /* 接続の受付け */ printf("Waiting for connection ...\n"); dstSocket = accept(srcSocket, (struct sockaddr *) &dstAddr, &dstAddrSize); printf("Connected from %s\n", inet_ntoa(dstAddr.sin_addr)); /* パケット受信 */ while(1) { numrcv = recv(dstSocket, buffer, BUFFER_SIZE, 0); if(numrcv == 0 || numrcv == -1) { status = closesocket(dstSocket); break; } printf("received: %s\n", buffer); } /* Windows 独自の設定 */ WSACleanup(); }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.