#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
char StrBuf[ 256 ] ; // データバッファ
IPDATA Ip ; // 接続用IPアドレスデータ
int NetHandle ; // ネットワークハンドル
int DataLength ; // 受信データ量保存用変数
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// IPアドレスを設定( ここにある4つのIP値は仮です )
Ip.d1 = ; //ここに
Ip.d2 = ; //自分の
Ip.d3 = ; //グローバルアドレスを
Ip.d4 = ; //入れた
// 通信を確立
NetHandle = ConnectNetWork( Ip ) ;
// 確立が成功した場合のみ中の処理をする
if( NetHandle != -1 )
{
// データ送信
NetWorkSend( NetHandle , "繋がったか~!?" , 17 ) ;
// データがくるのを待つ
while( !ProcessMessage() )
{
// 取得していない受信データ量を得る
DataLength = GetNetWorkDataLength( NetHandle ) ;
// 取得してない受信データ量が0じゃない場合はループを抜ける
if( DataLength != 0 ) break ;
}
// データ受信
NetWorkRecv( NetHandle , StrBuf , DataLength ) ; // データをバッファに取得
// 受信したデータを描画
DrawString( 0 , 0 , StrBuf , GetColor( 255 , 255 , 255 ) ) ;
// キー入力待ち
WaitKey() ;
// 接続を断つ
CloseNetWork( NetHandle ) ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
このプログラムを友人に渡して、友人宅から起動してもらい、私はDXライブラリにあった
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
char StrBuf[ 256 ] ; // データバッファ
int NetHandle , LostHandle ; // ネットワークハンドル
int DataLength ; // 受信データ量保存用変数
IPDATA Ip ; // 接続先IPアドレスデータ
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// 接続してくるのを待つ状態にする
PreparationListenNetWork() ;
// 接続してくるかESCキーが押されるまでループ
NetHandle = -1 ;
while( !ProcessMessage() && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 新しい接続があったらそのネットワークハンドルを得る
NetHandle = GetNewAcceptNetWork() ;
if( NetHandle != -1 ) break ;
}
// 接続されていたら次に進む
if( NetHandle != -1 )
{
// 接続の受付を終了する
StopListenNetWork() ;
// 接続してきたマシンのIPアドレスを得る
GetNetWorkIP( NetHandle , &Ip ) ;
// データが送られて来るまで待つ
while( !ProcessMessage() )
{
// 取得していない受信データ量が0以外のときはループから抜ける
if( GetNetWorkDataLength( NetHandle ) != 0 ) break ;
}
// データ受信
DataLength = GetNetWorkDataLength( NetHandle ) ; // データの量を取得
NetWorkRecv( NetHandle , StrBuf , DataLength ); // データをバッファに取得
// 受信したデータを描画
DrawString( 0 , 0 , StrBuf , GetColor( 255 , 255 , 255 ) ) ;
// 受信成功のデータを送信
NetWorkSend( NetHandle , "繋がったぞ~!!" , 17 ) ;
// 相手が通信を切断するまで待つ
while( !ProcessMessage() )
{
// 新たに切断されたネットワークハンドルを得る
LostHandle = GetLostNetWork() ;
// 切断された接続が今まで通信してた相手だった場合ループを抜ける
if( LostHandle == NetHandle ) break ;
}
// 切断確認表示
DrawString( 0 , 16 , "切断しました" , GetColor( 255 , 255 , 255 ) ) ;
// キー入力待ち
WaitKey() ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
といったプログラムを起動して待ち構えていたのですが、失敗しました・・・
自分や友人にルータ等の設定をしなきゃいけないでしょうか?
・・・こりゃポート開放とか通信対戦以前の問題ですね・・・
