我正在学习套接字编程...我正在尝试创建一个程序,在该程序中我在客户端屏幕上输入一个句子并将其传输到服务器,然后它出现在运行服务器的终端上......代码在这里.....(在看到这个问题的第一个答案后,我意识到我的错误,并将read() 函数中的 sockfd1更改为 connfd 并在 server.cpp 中的accept() 之后使用fork() ......但仍然是 prog不工作)
在 client.cpp 的早期,我使用了 fgets(clibuff, 100, stdin) 并将它和 write(sockcli, clibuff, strlen(clibuff)) 放在无限的 for 循环中,但这不起作用......
所以我决定让它只适用于一个语句并删除了 for 循环......但这也不起作用......
当我在两个单独的命令行上运行它们时,它们都开始正常(因为两个程序中的 x 输出 0)...但是当我在客户端键入任何内容并按 Enter 时...它不会出现在服务器窗口上。 ..代码的相关部分是:
-------server.cpp-----
int sockfd1;
sockfd1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
int x=bind(sockfd1, (sockaddr*)(&serv), sizeof(serv)); //serv is my sockaddr_in structure
cout<<x<<endl;
listen(sockfd1,5);
listen(sockfd1,5);
int y;
for(;;)
{
connfd=accept(sockfd1, &cliaddr, &siz);
if((y=read(sockfd1, servbuff, 100))>0) //i changed sockfd1 here to connfd
fputs(servbuff, stdout);
}
-----client.cpp------
char clibuff[100];
char line[100];
sockaddr_in cli;
bzero(&cli, sizeof(cli));
cli.sin_family=AF_INET;
inet_aton("127.0.0.1", &(cli.sin_addr));
cli.sin_port=htons(2289);
int sockcli;
sockcli=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int x= connect(sockcli,(sockaddr*)&cli, sizeof(cli));
cout<<x<<endl;
cin>>clibuff;
write(sockcli, clibuff, strlen(clibuff));
return 0;
我究竟做错了什么?