直接上代码
var server = http.listen(8888,function () {
var host = server.address().address
var port = server.address().port
console.log("welcome to http://%s:%s", host, port)
});
//连接到C服务器DataPort端口
function connectDPort(DataPort,IPaddr){
nodeServer.connect(DataPort, IPaddr, function() {
console.log('CONNECTED TO:',IPaddr,DataPort);
});
nodeServer.on('error',function(err){
console.error(err);
nodeServer.end();
})
};
//连接到C服务器CmdPort端口
function connectCPort(CmdPort,IPaddr){
client.connect(CmdPort, IPaddr, function() {
console.log('CONNECTED TO:',IPaddr,CmdPort);
});
}
// 同客户端建立连接
io.sockets.on('connection', function (socketIO) {
aSocket=socketIO;
// 测试用,连接成功
socketIO.emit("test","your websocket has connected");
//返回数据使用,控制C服务器
socketIO.on('fromWebClient', function (webClientData) {
console.log(webClientData);
var head=new Buffer([0xAA,0x01,0x11,0x11,0x11,0x11]);
var cmdData=new Buffer(webClientData);
var cmdControl=Buffer.concat([head,cmdData]);
console.log(cmdControl);
client.write(cmdControl);
});
socketIO.on('fromCmd',function(CmdData){
newIPaddr=CmdData.IPaddr;
newCmdPort=parseFloat(CmdData.CmdPort);
newDataPort=parseFloat(CmdData.DataPort);
console.log(newIPaddr);
console.log(newCmdPort);
console.log(newDataPort);
connectDPort(newDataPort,newIPaddr);
connectCPort(newCmdPort,newIPaddr);
})
});
代码有点长,截取的关键的部分,是这样,我想实现能够自由改ip和端口号。
io那里用了个socket.io,然后接收到网页发来的数据,连接端口。
但是现在就是直接ETIMEDOUT,应该怎么修改?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
代码给的有点少,你这个是两个应用的代码合在一起还是一个应用又做服务器又做客户端?一般比较少这样的。
没看到你代码中服务器部分有监听指定ip
你是指客户端链接错误IP时报错退出把?
你可以把连接服务器的代码放在一个函数里比如function connect(ip, port) {},然后监听错误:
如果出错,调用自身所在函数,传入新的IP和PORT就好了