WinSock1,2

サーバー/クライアントともに使用可能である。
また、サーバー側で、接続してくるIPを指定せず(一般的なサーバー)に運用する場合、
res.ai_flags = AI_PASSIVE;
を指定しなければならない。

実例
res.ai_flags = AI_PASSIVE;
getaddrinfo(NULL, "80", &hints, &res);
このエントリーをはてなブックマークに追加

前者は後方の引数2つにNULLを指定できる。

NULLを指定すると、送信元アドレスと送信元アドレスの長さが自動的に格納される。

Windowsアプリケーション側でrecvfromを使う場合
recvfrom(sock, buf, sizeof(buf) - 1, 0, NULL, NULL);


Linuxアプリケーション側でrecvfromを使う場合
clientbuflen = sizeof(client);
recvfrom(sock, buf, sizeof(buf) -1, 0, (struct sockaddr *)&client, &clientbuflen);

このエントリーをはてなブックマークに追加

#define WIN32_LEAN_AND_MEAN
マクロを
#include "DxLib.h"と#include <winsock2.h>を同時にインクルードする箇所でこれらのインクルードが行われる前に書き込むことで、二重定義エラーを回避できる。


DxLib.hも、winsock2.hも windows.hを内包しているのがエラーの原因である。
このエントリーをはてなブックマークに追加

#include <winsock.h>ではshutdown関数がうまくいかないことがある
(SD_XXXX系のマクロがコンパイルエラーを引き起こすことがある)

そういう時は#include <winsock2.h>を使えばコンパイルできる。

※この記事はHTMLコード回避のため、<>を使用している。
このエントリーをはてなブックマークに追加

↑このページのトップヘ