客户端和服务器示例不起作用
client and server example not working
我正在学习套接字编程...我试图创建一个程序,在其中我在客户端屏幕上输入一个句子,然后将其传输到服务器,然后它出现在运行服务器的终端上......代码在这里.....(在看到这个问题的第一个答案后,我意识到了我的错误,并将 read() 函数中的 sockfd1 更改为 connfd,并在服务器.cpp的 accept() 之后使用了 fork() ...但程序仍然不起作用)
在客户端.cpp的早期,我使用了fgets(clibuff,100,stdin),并将这个和write(sockcli,clibuff,strlen(clibuff))放在一个无限的for循环中,但这不起作用...
所以我决定让它只适用于一个语句并删除了 for 循环......但这也行不通...
当我在两个单独的命令行上运行它们时,它们都启动正常(因为两个程序的 x 都输出 0)...但是当我在客户端键入任何内容并按回车键时...它不会出现在服务器窗口中...代码的相关部分是:
-------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;
我做错了什么?
您正在从侦听套接字读取。 你不应该那样做。
"Connfd"是新连接的客户端的服务器<>客户端套接字 - 它是您应该在该客户端上读取/写入的套接字。 通常使用"connfd"作为参数创建新线程,以便可以独立处理每个客户端。
阅读 accept()。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 我正在开发服务器,ip作为参数传递不起作用
- 尝试将C++代码移植到服务器以将文件上传到Objective-C,但它不起作用
- Boost http服务器示例不起作用
- 使用 C/C++、SSL 协议的客户端和服务器通信不起作用
- 为什么客户端/服务器机制(使用套接字)不起作用?
- C ++中的简单客户端服务器程序不起作用
- 客户端和服务器示例不起作用