我正在 ubuntu 中学习套接字程序,为此我编写了以下用于服务器客户端通信的程序。该程序未打开端口。我还有一些关于服务器客户端通信的其他问题:
- 当服务器接受客户端请求时,服务器是否在接受请求的那一刻开始从客户端读取?
- u_connect 和 u_accept() 返回的文件描述符是否相同?(我找不到它,因为我的端口没有打开)
- 由于我在同一台计算机上测试服务器客户端通话,我可以使用随机数作为端口吗?
我正在使用一个包含用于套接字编程的 OS 函数的包装库。
这是代码:
服务器.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;
}
客户端.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;
}