
ソケットプログラミングを学ぶためにソケットを設定するには、次の機能があります。
29 int CreatePassiveSock(char *protocol, char *portstr, int qlen) {
30 int s, port, type, saddrlen;
31 char *endptr;
32 struct sockaddr_in saddr;
33 port = (int) strtol(portstr, &endptr, 10);
34 if (*endptr) {
35 printf("\nPlease specify a positive integer for port\n");
36 exit(1);
37 }
38 saddrlen = sizeof(saddr);
39 memset(&saddr, 0, saddrlen);
40 saddr.sin_family = AF_INET;
41 saddr.sin_addr.s_addr = INADDR_ANY;
42 saddr.sin_port = htons(port);
43 if (strcmp("tcp", protocol) == 0)
44 type = SOCK_STREAM;
45 else if (strcmp("udp", protocol) == 0)
46 type = SOCK_DGRAM;
47 else {
48 printf("Unsupported protocol given");
49 exit(1);
50 }
51 if ((s = socket(PF_INET, type, 0)) == -1){
52 perror("socket call failed");
53 exit(1);
54 }
55 if (bind(s, (struct sockaddr *)&saddr, saddrlen) == -1) {
56 perror("Bind failed");
57 exit(1);
58 }
59 if (type == SOCK_STREAM) {
60 if (listen(s, qlen) == -1) {
61 perror("listen failed");
62 exit(1);
63 }
64 }
65 return s;
66 }
ポート番号として6001を使用して呼び出すと表示される行です。netstat -a | head
tcp 0 0 0.0.0.0:x11-1 0.0.0.0:* LISTEN
0.0.0.0:x11-1 と表示されるのはなぜですか? 0.0.0.0:6001を取得する必要はありませんか?
重要な場合は、PopOSを実行しているノートブックでこれを行います。
答え1
TCP ポート 6001 が識別されるため、x11-1
次のラベルを使用して表示されます。見つかった IP アドレスに対応するホスト名を検索する方法と同様に、見つかった/etc/services
ポートnetstat
番号に対応するサービス名を検索します。バラよりman 5 services
説明/etc/services
とアクセスに使用される機能については、XクライアントはTCPポート6000+ <表示番号>に接続する必要があることをどうやって知ることができますか?6000+ の範囲のポート番号マッピングのガイドラインです。
/etc/services
システムにどのサービスが知られているかを確認できます。公式レジストリはIANAによって管理されます。、あなたは見つけることができますX11の職業もあります。
netstat
ポート番号を強制的に表示できます-n
。