重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Windows XP に GCC と Eclipseをインストールしました。
過去にVisual Studio 2008 Express Editionを使用していたとき
ソケットクライアントは以下のとおり実装しました。
ーーーー
#include <iostream>
#include <ws2tcpip.h>
#pragma comment(lib,"ws2_32.lib")

using namespace std;

int main() {
int dstSocket;
struct sockaddr_in dstAddr;
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);

// sockaddr_in 構造体のセット
memset(&dstAddr, 0, sizeof(dstAddr));
dstAddr.sin_port = htons(80);
dstAddr.sin_family = AF_INET;
dstAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

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

//接続
if(connect(dstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr))){
cout << "接続できませんでした\n" << endl;
return(-1);
}

char buffer[1024] = "GET / HTTP/1.0\r\n\r\n";

send(dstSocket, buffer, sizeof(buffer), 0);
//パケットの受信
int n = recv(dstSocket, buffer, sizeof(buffer), 0);
cout << buffer << endl;
// Windows でのソケットの終了
closesocket(dstSocket);
WSACleanup();
return(0);
}
ーーーー

上記と同じ機能をGCC上で実装したいのですが、どこかに
コードのサンプルがのっているWebサイトはありますか?

A 回答 (3件)

-mno-cygwin


は?
    • good
    • 0
この回答へのお礼

cygwin上で-mno-cygwinを使用したところエラーになりました。cygwin上でcygwinのライブラリを使わないというオプションは使用できないようです。コマンドプロンプト上で-mno-cygwinを付加したところ無事コンパイルできました。ありがとうございました。ただしeclipse上で-mno-cygwinを使う方法がわかりません。makeファイルを直接編集して対応できましたがeclipse上から-mno-cygwinを使う方法は別途探してみます。

お礼日時:2009/10/09 11:37

お疲れ様です。



gccが手元にないので実証出来ていませんが、

#include <ws2tcpip.h>

extern "C"{
#include <ws2.tcpip.h>
}
とするとどうなりますか?

また、pragma自体はgccでもサポートされているようですが、commentはgccでサポートされていないようです。
コンパイルオプション等でリンクするしかないようです。(他の方法があるのか不明)

それと、同じような質問をされるのであれば、前回と同じようにどのようなエラーが出ているのか記載をしないと読む気がしなくなりますよ。
    • good
    • 0
この回答へのお礼

ご回答頂き感謝しております。しかし上記の対応では不可でございました。

お礼日時:2009/10/09 11:38

optionつけてコンパイルしたらそのままできませんか


g++ yourprogram.cpp -lws2_32 -mno-cygwin
    • good
    • 0
この回答へのお礼

駄目でした。故障でしょうか。

C:\>g++-4 test.cpp -lws2_32
In file included from /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../include/w32a
pi/ws2tcpip.h:19,
from test.cpp:2:
/usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../include/w32api/winsock2.h:103:2: w
arning: #warning "fd_set and associated macros have been defined in sys/types.
This may cause runtime problems with W32 sockets"
In file included from /usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../include/w32a
pi/ws2tcpip.h:19,
from test.cpp:2:
/usr/lib/gcc/i686-pc-cygwin/4.3.2/../../../../include/w32api/winsock2.h:635: err
or: declaration of C function 'int gethostname(char*, int)' conflicts with
/usr/include/sys/unistd.h:206: error: previous declaration 'int gethostname(char
*, size_t)' here

お礼日時:2009/10/08 20:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!