Node.js在Heroku/AppFog上的TCP服务器
Node.js TCP server on Heroku/AppFog
这是我在Heroku和AppFog上托管的node.js TCP服务器的代码。我的客户端是用C编写的,它只是向服务器发送消息并获得响应。当我在本地托管服务器时,它们工作正常。但是当我尝试连接到在线服务器时,客户端失败("连接错误:操作超时")。知道发生了什么吗?
服务器(node . js):var net = require('net');
var server = net.createServer(function (socket) {
socket.on("data", function(data){
socket.write(data.toString());
});
});
var port = process.env.VCAP_APP_PORT || 8081;
console.log(port);
server.listen(port);
Client(C) from http://www.linuxhowtos.org/C_C++/socket.htm):
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(const char *msg)
{
perror(msg);
exit(0);
}
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
if (argc < 3) {
fprintf(stderr,"usage %s hostname portn", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
server = gethostbyname(argv[1]);
if (server == NULL) {
fprintf(stderr,"ERROR, no such hostn");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
while (1){
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR reading from socket");
printf("%sn",buffer);
}
close(sockfd);
return 0;
}
无论process.env.VCAP_APP_PORT
设置为什么,客户端必须始终在80端口上连接。AppFog将请求从端口80代理到运行应用程序的端口。
相关文章:
- 通过TCP连接到Wi-Fi上的0.0.0.0,而侦听器PC有活动的Wi-Fi,以太网没有'不起作用
- 同一提升 TCP 套接字对象上的多个连接
- TOS字段从Linux的TCP插座上接收到的数据包获取
- 在服务器关闭的TCP连接上发送数据时的行为不一致
- boost/asio async_read() TCP Server - 了解 Linux 上的 io_service.
- C 中TCP插座上的可变长度消息
- iOS 上的 TCP 流不会显示在无线网络上
- 在 Windows 上的环回接口上使用 tcp/ip 的延迟方面可以预期的情况
- TCP/IP IOCP接收到的数据有时已损坏-Windows上的Visual C++
- 我发送的 tcp 帧上的 modbus 有一半是无效的
- 如何在一台本地计算机/主机上对简单的 TCP 客户端/服务器进行单元测试
- 在 Qt 中确定 TCP 套接字上的数据类型
- 在linux上的c++中获取活动的TCP/UDP连接
- Windows上的TCP窗口缩放
- 如何知道TCP连接是否存在于同一机器上的两个进程之间
- Node.js在Heroku/AppFog上的TCP服务器
- Boost-asio监听单个(TCP)接收器上的多个IP地址
- TCP套接字上的read()何时返回?
- 特定接口上的TCP/IP连接
- IPv4 上的 TCP 的最小数据包大小是多少