C でソケット プログラムを作成しようとしています。実行すると、コード全体が正常に動作します。
#define PORT "3333"
だがしかし
#define PORT getParameter("setting.ini","PORT")
基本的に、getParameter は、setting.ini ファイルを開いて読み通し、変数とその値を探してから返します。私がこれを行っている唯一の理由は、コードにポート番号をハードコーディングしたくないからです。私は得た:
「サーブ名は ai_socktype ではサポートされていません」
このエラーの原因がわかりません。何か案は?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *substring(char* str, int start, int length) {
char *newString = (char *)malloc(length * sizeof(char)+1);
int i, x = 0;
int end=start+length-1;
for(i = start ; i <= end; i++)
newString[x++] = str[i];
newString[x] = '\0';
return newString;
}
char *getParameter(char *fName, char *pName)
{
FILE *fr;
char line[80];
int i;
fr = fopen (fName, "r"); /* open the file for reading */
while(fgets(line, 80, fr) != NULL)
{
i = strcspn (line,"=");
if(strcmp(pName,substring(line,0,i))==0){
char *value = substring(line,i+1,strlen(line)-i);
fclose(fr);
return value;
}
}
fclose(fr);
}
int main(void){
char *PORT = getParameter("setting.ini","PORT");
const int BACKLOG = atoi(getParameter("setting.ini","BACKLOG"));
printf("%s\n",PORT);
printf("%d\n",BACKLOG);
return 0;
}