サーバプログラムとクライアントプログラム、セットで動きます
サーバプログラムのほうはC/C++ソケットプログラミング第一回をご覧ください

第二回はクライアントプログラムの説明になります


まず、クライアントプログラムの手順を示します

WSAStartup	WinSockライブラリ準備
socket	ソケット作成
connect	サーバに接続
recv,send	データ送受信(繰り返し)
closesocket	ソケットを閉じる
WSACleanup	WinSockライブラリ後処理

 銑◆↓ぁ銑Δ魯機璽仟Δ汎韻犬任
主に手順を見てみましょう
実装はclient.cppに書かれています


◆↓です(Connectメソッド)

// 接続
bool CClient::Connect(const char* IP,u_short PORT)
{
	// sockaddr_in 構造体のセット
	struct sockaddr_in dstAddr;
	memset(&dstAddr, 0, sizeof(dstAddr));
	dstAddr.sin_port = htons(PORT);
	dstAddr.sin_family = AF_INET;
	dstAddr.sin_addr.s_addr = inet_addr(IP);

	// ソケットの生成
	m_DstSocket = socket(AF_INET, SOCK_STREAM, 0);

	// 接続
	if(connect(m_DstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr)) 
		== SOCKET_ERROR){
		return false;
	}
	// ソケットを非同期モードにする
	u_long val=1;
	ioctlsocket(m_DstSocket, FIONBIO, &val);
	return true;
}

まずsockaddr_in構造体を作ります
これにサーバのポート番号とIPアドレスを指定します。
dstAddr.sin_portメンバにはポート番号を指定します

dstAddr.sin_port = htons(PORT);

このときPORT引数に入るポート番号はサーバ側のポート番号と合わせなければなりません
dstAddr.sin_addr.s_addr にはサーバー側のIPアドレスを指定します

dstAddr.sin_addr.s_addr = inet_addr(IP);

IP引数にはIPアドレスの文字列を指定します
サーバープログラムとクライアントプログラムを同じコンピュータ上で起動させる場合は
127.0.0.1というテスト用IPアドレスを指定します
実際に別のコンピュータ同士で接続する場合はサーバー側のIPアドレスを指定する必要があります
IPアドレスはサーバ側のコマンドラインからipconfigコマンドで確認できます

△socket関数でのソケットの作成方法はサーバ側と同じです
で作成したソケットと先ほどのsockaddr_in構造体を指定し、サーバーに接続します
このとき、サーバ側がaccept関数を呼び出していなければ接続に失敗します
接続に成功したら非同期ソケット化します

u_long val=1;
ioctlsocket(m_DstSocket, FIONBIO, &val);

非同期化したソケットをデータの送受信に使います


選択肢 投票
(^ω^)できたー 55  
。(`ω´#)。できねー 8  

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-07-10 (月) 15:55:31