私はubuntuでソケットプログラムを学んでおり、サーバークライアント通信用に次のプログラムを作成しました。プログラムはポートを開いていません。サーバークライアント通信に関して他にもいくつか質問があります。
- サーバーがクライアント要求を受け入れると、サーバーは要求を受け入れた瞬間にクライアントからの読み取りを開始しますか?
- u_connectとu_accept()によって返されるファイル記述子は同じですか?(ポートが開いていないため、見つかりませんでした)
- 同じコンピューターでサーバークライアントトークをテストしているので、乱数をポートとして使用できますか?
ソケットプログラミング用のOS関数を含むラッパーライブラリを使用しています。
コードは次のとおりです。
Server.c
int main()
{
char client[50];
char buf[1024];
u_port_t portnumber;
portnumber = 4862;
int fd = u_open(portnumber);
int communFd = u_accept(fd, client, 50);
printf("Opened com %d\n\n", communFd);
fprintf(stderr, "\nComun fd is %d\n\n\n", communFd);
read(communFd, buf, 1024);
write(STDOUT_FILENO, buf, 1024);
fprintf(stderr, "\n\nReading complete\n");
return 0;
}
Client.c
int main()
{
u_port_t portnumber;
portnumber = 4862;
char client[] = "Alfred";
char buf[1024];
int communFd = u_connect(portnumber, client);
printf("comun is %d\n", communFd);
read(STDIN_FILENO, buf, 1024);
write(communFd, buf, 1024);
return 0;
}