Linuxでglibmm v2.42を使用しています。
ネイティブ Linux ソケットを使用してクライアント/サーバーを作成したいと考えています。
ソケットを作成しようとすると、常にコード 15 で例外がスローされます (サポートされていません)。
以下のコードでは、ソケット ファミリの列挙型、型の列挙型、およびプロトコルの列挙型をループしましたが、常に失敗します。
#include <iostream>
#include <glibmm.h>
#include <giomm.h>
int main(){
Glib::init();
Gio::init();
std::vector<Gio::SocketFamily> fams = {Gio::SOCKET_FAMILY_UNIX , Gio::SOCKET_FAMILY_IPV4 , Gio::SOCKET_FAMILY_IPV6};
std::vector<Gio::SocketType> types = {Gio::SOCKET_TYPE_STREAM, Gio::SOCKET_TYPE_DATAGRAM, Gio::SOCKET_TYPE_SEQPACKET };
std::vector<Gio::SocketProtocol> protocols = {Gio::SOCKET_PROTOCOL_DEFAULT , Gio::SOCKET_PROTOCOL_TCP, Gio::SOCKET_PROTOCOL_UDP, Gio::SOCKET_PROTOCOL_SCTP };
Glib::RefPtr<Gio::Cancellable> cancellable = Gio::Cancellable::create();
for(int i = 0; i < fams.size(); i++){
for(int j = 0; j < types.size(); j++){
for(int k= 0; k < protocols.size(); k++){
Gio::SocketFamily fam = fams[i];
Gio::SocketType type= types[j];
Gio::SocketProtocol protocol = protocols[k];
try {
Glib::RefPtr<Gio::Socket> socket = Gio::Socket::create(fam , type, protocol , cancellable);
} catch(const Gio::Error& e){
std::cout << e.code() << std::endl;
}
}
}
}
return 0;
}
何か案は ?glibmm を使用したネイティブ Linux ソケットを備えたクライアント/サーバーの実例を持っている人はいますか?
ご協力いただきありがとうございます。
編集: コードで、XXX を削除し、ループを記述しました。このコードは、すべてのパラメーター構成に対して 15 を返します。