- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个简单的程序来将文件从服务器传输到客户端(目前两者都在同一台计算机上)。使用“telnet 127.0.0.1 [端口]”,我可以成功从服务器获取文件,但是当我运行客户端时,服务器拒绝连接。我怀疑客户端正在尝试连接到错误的地址,但我不确定。如果有帮助的话,我还添加了一些 GDB 测试输出。
服务器:“./server 0 4100 bigfile 100 0.01”
int main(int argc, char* argv[])
{
int sockfd;
if(!(sockfd = socket(AF_INET, SOCK_STREAM, 0))) {
error("Failed to create socket");
}
struct sockaddr_in serv_addr, cl_addr;
bzero((void*) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(atoi(argv[2]));
if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
error("Failed to bind");
}
listen(sockfd, 10);
int fd = open(argv[3], O_RDONLY);
int bufsize = atoi(argv[4]);
int packet_period = atoi(argv[5]);
size_t cl_addr_len = sizeof(cl_addr);
char *buf = new char[bufsize];
while(true) {
int sd;
cout << "waiting for client..." << endl;
if(!(sd = accept(sockfd, (struct sockaddr *) &cl_addr, (socklen_t*) &cl_addr_len))) {
error("Failed to acccept");
}
cout << "Accepted client connection" << endl;
lseek(fd, 0, SEEK_SET);
while(int n = read(fd, buf, bufsize)) {
cout << "Transferring " << buf << endl;
usleep(100000);
write(sd, buf, n);
}
}
}
客户端:“./client 0 127.0.0.1 4100 大文件统计信息”
int main(int argc, char *argv[])
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
error("Failed to open socket");
}
struct sockaddr_in serv_addr;
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(argv[2]);
serv_addr.sin_port = htons(atoi(argv[3])); // I tried both htons and htonl
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) {
error("Failed to connect");
}
int n;
char buf[256];
int fd = open(argv[4], O_RDONLY);
while((n = read(sockfd, buf, 256)) > 0) {
printf("Received: %s\n", buf);
write(fd, buf, n);
}
close(fd);
close(sockfd);
return 0;
}
GDB 输出:
(gdb) r
Starting program: [...]/client 0 127.0.0.1 4100 bigfile stats
Breakpoint 1, main (argc=6, argv=0x7fffffffde68) at client.cpp:31
31 if (connect(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
(gdb) p serv_addr
$1 = {sin_family = 2, sin_port = 0, sin_addr = {s_addr = 16777343},
sin_zero = "\000\000\000\000\000\000\000"}
最佳答案
{sin_family = 2, sin_port = 0, sin_addr = {s_addr = 16777343}, sin_zero = "\000\000\000\000\000\000\000"}
所以 sin_port
是错误的:它不应该为零。设置它的代码是:
serv_addr.sin_port = htonl(atoi(argv[3]));
问题就出在这里。应该是
serv_addr.sin_port = htons(atoi(argv[3]));
不是今天的问题,而是
printf("Received: %s\n", buf);
应该是
printf("Received: %.*s\n", n, buf);
关于c++ - 已修复 : C++ server/client program: "Connection refused",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820448/
这个问题已经有答案了: AWS RDS How to set up a MySQL Database (1 个回答) 已关闭 6 年前。 我有一个AWS Elastic Beanstalk实例 Tom
我正在 Mean.js 版本 4.2 上运行 npm test,它在 Protractor e2e 测试中给出了“连接被拒绝”错误。我尝试更新 Selenium 像 this says to.现在它的
我购买了一台服务器(新加坡地区,512 MB RAM)我试图在该服务器中设置单节点集群。我从这个 link当我检查 $ sudo service Cassandra status它正在显示 nodet
我正在使用 spring cloud 来配置微服务。我使用 Jhipster 来生成应用程序。 我有三个应用程序 JHipster-Registry、Gateway 和 admin 应用程序 所有三个
我有 2 个 java 文件 Server.java 和 Client.java。两者都在不同的容器中。 DOCKER 文件:我用于服务器的 dockerfile(在名为“Server”的文件夹中)是
客户端应用程序将 json 数据发送到 localhost:8080 上的服务器,该数据打包并作为 Docker 镜像运行。使用 Postman chrome 应用程序手动发送 json 时,服务器工
我正在尝试关注 celery tutorial ,但是当我运行 python manage.py celeryd 时遇到了一个问题:我的 RabbitMQ 服务器(安装在我开发箱的虚拟机上)不允许我的
我清理了~/.ivy2/cache目录。 我的project/plugins.sbt文件: $ cat project/plugins.sbt // Comment to get more infor
ELK 与销售人员 URL:http://localhost:9200/>, :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Po
我正在另一个容器中使用 Dockerize spring boot 应用程序和 redis。 我使用 docker compose 在同一网络中运行两个容器,这是我的 docker-compose.y
我试图从我的应用程序访问 Rest API。当该 API 不在线时,我的应用程序发生了上述错误。我正在使用 Spring Boot 。我想知道,有什么方法可以在访问该网址之前检查该网址的可用性。 S
在我的 flutter 应用程序中,我使用 flask 服务器进行测试。我启动了我的服务器并在我的 flutter 应用程序中运行 API url。但是 SocketException: Connec
我正在 Mac 上的 IntelliJ 中设置远程调试器。我没有做任何修改就遵循了模板。然后我单击“调试 xxx”按钮。表明 "Error running 'Remote Debugger': Una
我有一个 linux box,jenkins 服务器在上面运行并从 git 中拉取脚本并开始执行 我有一台 Windows 电脑,我从它打开 jenkins url 说 xyz:8080 并尝试从我的
我在 tomcat 7.50 上有一个应用程序,在单个请求上工作正常,但在许多同时请求 (~1200) 上我得到: 2014-11-02 11:22:48,485 ERROR [MONITOR-AG
当我尝试重新配置我的 gitlab 实例时,出现了这个错误。sudo gitlab-ctl reconfigure 工作正常但是当我尝试启动 gitlab 时我看到 502 错误并且当我跟踪日志时我看
我在 3 个 n1-standard-4 GKE 实例上运行了大约 200 个 pod。流量水平较低,因此每台机器上都有大量备用 CPU 和 RAM。通常当服务尝试相互连接时,连接失败并显示“CONN
我在unbundu机器中使用JMeter设置了分布式负载测试环境。 ->主站:系统运行JMeter GUI,控制每个从站。 ->从站:运行jmeter-server的系统,从主站接收命令,并向被测服务
我需要帮助来解决被拒绝的状态。我查看了 named.conf,一切正常。 我什至把allow-query改成了any,原来是localhost。 dig xxx.com @ns1.xxx.com ;
我正在使用Laravel。当我dd($request->all())时,其中的数据涉及文件和其他一些数据。它返回错误 [2019-02-22 19:40:24] local.ERROR: stream
我是一名优秀的程序员,十分优秀!