实现通用池的NodeJS TCP客户端发送到Java TCP服务器时缺少数据
我使用从NodeJS TCP客户端向Java TCP服务器发送数据 这是my NodeJS客户端入口点中的相关代码实现通用池的NodeJS TCP客户端发送到Java TCP服务器时缺少数据,java,node.js,sockets,connection-pooling,Java,Node.js,Sockets,Connection Pooling,我使用从NodeJS TCP客户端向Java TCP服务器发送数据 这是my NodeJS客户端入口点中的相关代码blockEventListener.js-完整代码: 这是blockProcessing.js-完整代码中的相关代码: EPIPE错误输出示例: !!!!!!!!!!!!! ERROR !!!!!!!!!!!!! Error: write EPIPE at afterWriteDispatched (internal/stream_base_commons.js:156:2
blockEventListener.js
-完整代码:
这是blockProcessing.js
-完整代码中的相关代码:
EPIPE错误输出示例:
!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!
Error: write EPIPE
at afterWriteDispatched (internal/stream_base_commons.js:156:25)
at writeGeneric (internal/stream_base_commons.js:147:3)
at Socket._writeGeneric (net.js:788:11)
at Socket._write (net.js:800:8)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at Socket.Writable.write (_stream_writable.js:318:11)
at /root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:124:16
at new Promise (<anonymous>)
at writeToSocket (/root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:109:12) {
errno: 'EPIPE',
code: 'EPIPE',
syscall: 'write'
}
{
blocknumber: '426',
...more details...
}
!!!!!!!!!!!!!错误!!!!!!!!!!!!!
错误:写入EPIPE
在写后发布(内部/stream_base_commons.js:156:25)
在writeGeneric(内部/stream_base_commons.js:147:3)
在插座上写下电子(net.js:788:11)
在套接字上写入(net.js:800:8)
在doWrite(_stream_writable.js:403:12)
在writeOrBuffer(_stream_writable.js:387:5)
在Socket.Writable.write(_stream_Writable.js:318:11)
at/root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:124:16
在新的承诺()
在writeToSocket(/root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:109:12){
errno:‘EPIPE’,
代码:“EPIPE”,
系统调用:“写入”
}
{
区块编号:“426”,
…更多细节。。。
}
关于我目前的情况,我有几个问题:
.close()
语句时,我没有得到任何错误,但我只看到前五个数据块。后续数据似乎丢失了,但我在我的客户机中没有看到任何错误。为什么?
与其使用您的客户机,我建议您使用telnet来启动您的服务器。一旦它在那里运行,然后将客户端和服务器连接在一起。@NomadMaker我不明白你的意思,你能详细说明一下吗?Telnet是一个允许你创建到internet地址的文本连接的程序。这将允许您作为客户机登录服务器,但您必须自己键入所有内容。我过去曾用它来测试服务器和客户端。
exports.processBlockEvent = async function (channelname, block, socket, configPath) {
return new Promise(async (resolve, reject) => {
// some code
for (var dataItem in dataArray) {
// more code
for (var actionItem in actions) {
// yet more code
for (var record in rwSet) {
// ignore lscc events
if (rwSet[record].namespace != "lscc") {
// create object to store properties
const writeObject = new Object();
writeObject.blocknumber = blockNumber;
writeObject.chaincodeid = chaincodeID;
writeObject.channelid = channelid;
writeObject.timestamp = timestamp;
writeObject.txnid = txnid;
writeObject.values = rwSet[record].rwset.writes;
writeToSocket(socket, writeObject, channelname, chaincodeID);
}
}
}
console.log("---------");
}
// update the nextblock.nextBlock file to retrieve the next block
fs.writeFileSync(configPath, parseInt(blockNumber, 10) + 1);
socket.write('<END>\n');
resolve(true);
})
}
function writeToSocket(socket, writeObject, channelname, chaincodeID) {
return new Promise(async (resolve, reject) => {
console.log(`ChannelID: ${writeObject.channelid}`);
console.log(`Transaction Timestamp: ${writeObject.timestamp}`);
console.log(`ChaincodeID: ${writeObject.chaincodeid}`);
console.log(`TxnID: ${writeObject.txnid}`);
console.log(writeObject.values);
let objstr = JSON.stringify(writeObject);
socket.on('error', function(ex) {
console.log('!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!');
console.log(ex);
console.log(writeObject);
console.log('=================================');
});
socket.write(objstr);
socket.write('\n');
var outputLog = path.resolve(__dirname, folderLog, `${channelname}_${chaincodeID}.log`);
fs.appendFileSync(outputLog, objstr + "\n");
});
}
package demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleListener {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(Integer.parseInt(args[0]));
int n = 0;
while (n < Integer.parseInt(args[1])) {
new ThreadSocket(server.accept());
n++;
}
server.close();
}
}
class ThreadSocket extends Thread{
private Socket insocket;
ThreadSocket(Socket insocket){
this.insocket = insocket;
this.start();
}
@Override
public void run() {
try {
InputStream is = insocket.getInputStream();
InputStreamReader reader = new InputStreamReader(is);
BufferedReader in = new BufferedReader(reader);
PrintWriter out = new PrintWriter(insocket.getOutputStream(), true);
StringBuilder sb = new StringBuilder();
String line = in.readLine();
while (line != null && !"<END>".equalsIgnoreCase(line)) {
sb.append(line + "\n");
line = in.readLine();
}
String output = sb.toString();
System.out.println("INCOMING: " + output);
out.println(200);
out.close();
in.close();
reader.close();
is.close();
insocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!
Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
at doWrite (_stream_writable.js:399:19)
at writeOrBuffer (_stream_writable.js:387:5)
at Socket.Writable.write (_stream_writable.js:318:11)
at /root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:103:16
at new Promise (<anonymous>)
at Object.exports.processBlockEvent (/root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:16:12)
at Timeout._onTimeout (/root/nodejslistener/accessreal/product/sdk/nodejs/blockEventListener.js:185:39) {
code: 'ERR_STREAM_DESTROYED'
}
{
blocknumber: '427',
...more details...
}
!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!
Error: write EPIPE
at afterWriteDispatched (internal/stream_base_commons.js:156:25)
at writeGeneric (internal/stream_base_commons.js:147:3)
at Socket._writeGeneric (net.js:788:11)
at Socket._write (net.js:800:8)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at Socket.Writable.write (_stream_writable.js:318:11)
at /root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:124:16
at new Promise (<anonymous>)
at writeToSocket (/root/nodejslistener/accessreal/product/sdk/nodejs/blockProcessing.js:109:12) {
errno: 'EPIPE',
code: 'EPIPE',
syscall: 'write'
}
{
blocknumber: '426',
...more details...
}