1

非標準ライブラリを使用せずに、C++で単純なTCPソケットを設定しようとしています。クライアントソケットとサーバークライアントを作成し、クライアントからサーバーに整数を渡したい。サーバーとクライアントクラスの簡単な例を教えてもらえますか?

4

1 に答える 1

4

C ++には、ソケット用の「標準ライブラリ」は付属していませんが、もちろん、ソケット用の標準Cライブラリにアクセスできます。

#include <sys/socket.h>

sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(destination_address_as_32bit_number);
addr.sin_port = htons(destination_port_number_as_16bit_number);

int s = socket(AF_INET, SOCK_STREAM, 0);
connect(s, &addr, sizeof(addr));

これで、他のファイルと同じように「s」の読み取りと書き込みができるようになります。
サーバーでは、少し異なります。

#include <sys/socket.h>

sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = 0; // bind to all interface addresses
addr.sin_port = htons(local_port_number_as_16bit_number);

int s = socket(AF_INET, SOCK_STREAM, 0);
bind(s, &addr, sizeof(addr));
listen(s, 50);  // 50 (the backlog) isn't really used on modern systems
int c = accept(s, &addr, sizeof(addr));  // addr gets info about client

これで、他のファイルと同じように「c」に対して読み取り/書き込みを行うことができます。「s」は、あなたが何もしないリスニングソケットですaccept()

于 2012-10-15T20:39:45.683 に答える