Socket Serverは、待ち受けポートとIPを指定します。
1558 ワード
Socket Serverは、待ち受けポートとIPを指定します。
TCP/IPはネットワークプログラミングを行う時、socket関連関数を使用します。各関数の詳細はここで紹介します。https://www.cnblogs.com/liedElxa/p/10795398.html
需要の説明
例えば10.0.0.1、10.0.0.2、10.0.0.3の3つのネットワークカードが使用されている場合を考慮して、私たちは8080番ポートのサーバーを作りたいです。しかもお客様の訪問だけが10.0.0.1:8080に応答します。アクセスは10..2:8080または10.0.0.3:8080になります。 はTCP/IPネットワークプログラミングを行う過程で、一般的にserv_adrをバインディングする時、serv_を使用する。adrをバインディングします
解決策
serv_adr構造体の定義は以下の通りである。
TCP/IPはネットワークプログラミングを行う時、socket関連関数を使用します。各関数の詳細はここで紹介します。https://www.cnblogs.com/liedElxa/p/10795398.html
需要の説明
例えば10.0.0.1、10.0.0.2、10.0.0.3の3つのネットワークカードが使用されている場合を考慮して、私たちは8080番ポートのサーバーを作りたいです。しかもお客様の訪問だけが10.0.0.1:8080に応答します。アクセスは10..2:8080または10.0.0.3:8080になります。 はTCP/IPネットワークプログラミングを行う過程で、一般的にserv_adrをバインディングする時、serv_を使用する。adrをバインディングします
解決策
serv_adr構造体の定義は以下の通りである。
struct sockaddr_in {
short int sin_family; /* */
unsigned short int sin_port; /* */
struct in_addr sin_addr; /* Internet */
unsigned char sin_zero[8]; /* sockaddr */
};
バンド関数の定義は以下の通りです。// address socket
int bind(int socket,sockaddr * address,uint addrlen);
// socket: socket
// sockaddr: Ip
// addrlen:
// : -1 , , ( )
// 0 IP, INADDR_ANY(0.0.0.0)
だから、私達はserv_を設置することができます。adr構造体のs_addr値は、指定されたIP(10.0.0.1)のバインディングを実現し、その後、bind()関数を呼び出しても、その後の論理は変わらない。 memset(&serv_adr, 0, sizeof(serv_adr));
serv_adr.sin_family = AF_INET;
/* INADDR_ANY , SERV_PORT, */
//serv_adr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_adr.sin_addr.s_addr = inet_addr("10.0.0.1");
serv_adr.sin_port = htons(8080);
// ,
if (bind(serv_sock, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) == -1)
error_handling("bind() error");
その後のプログラミングの流れは変わりません。