2017-01-16 3 views

답변

2

당신은 TCP 클라이언트를 구현하는 전자의 Node net API를 사용할 수 있습니다.

-1

yo는 socket.io-client을 사용할 수 있습니다. 예제 코드 :

//To connect to server 
var socket = io.connect("http://Ip of server to which you want to connect" + "port Number"); 

//And to listen for events see below code 
socket.on('event name', function (response) { 
    console.log("got from server", response) 
}); 
+0

감사하지만 낮은 TCP 수준의 API가 필요합니다. – Teebo

2

크롬 API가 있는지 쉽게 테스트 할 수 있습니다. 그렇지 않으면 노드 API를 사용합니다. 따라서 Chrome App과 Electron App 용 코드베이스가 동일합니다. 2 개의 API가 약간 다르므로 여기에 게시하는 방법을 게시합니다.

let client = null; // node socket 
    let socketId; // chrome API socket id 

    function toBuffer(ab) { 
    return new Buffer(new Uint8Array(ab)); 
    } 

    function toArrayBuffer(buf) { 
    return new Uint8Array(buf).buffer; 
    } 

    function initConnToServer (ip, port) { 
    return new Promise((resolve, reject) => { 
     if(typeof chrome !== 'undefined') { 
     chrome.sockets.tcp.create({}, r => { 
      socketId = r.socketId; 
      chrome.sockets.tcp.connect(r.socketId, ip, port, code => resolve(code)); 
     }); 
     } else { 
     client = new net.Socket(); // return a Node socket 
     client.connect(port, ip); 
     client.on('connect',() => resolve()); 
     } 
    }); 
    }; 

    function sendToServer_simple (data) { 
    return new Promise((resolve, reject) => { 
     if(typeof chrome !== 'undefined') { 
     chrome.sockets.tcp.send(socketId, data, r => {}); 
     chrome.sockets.tcp.onReceive.addListener(receiveInfo => resolve(receiveInfo.data)); 
     } else { 
     client.write(toBuffer(data)); 
     client.on('data', data => resolve(toArrayBuffer(data))); 
     } 
    }); 
    }; 
1

전자에서는 Node net API을 사용하여 TCP 클라이언트를 구현할 수 있습니다.

작은 소켓 서버에서 SocketTest Java 응용 프로그램 (예 : HERE)으로이 샘플 코드를 시도해보십시오 (IP 주소를 변경하는 것을 잊지 마십시오).

연결되면 "세계!" 서버 측 문자열. 서버에서이 메시지를 보내려고 시도하십시오.

{ 
"nom":"Xplorer", 
"prenom":"Yann" 
} 

안녕 Yann! 전자 콘솔에서.

'use strict'; 

const electron = require('electron'); 

const app = electron.app; 

const path = require('path'); 
const url = require('url'); 
const net = require('net'); 


const BrowserWindow = electron.BrowserWindow; 

let mainWindow; 
var socketClient 


    const BrowserWindow = electron.BrowserWindow; 

    let mainWindow; 
    var socketClient 

    function createWindow() { 
     // Create the browser window. 
     mainWindow = new BrowserWindow({width: 800, height: 600,backgroundColor:'#FFFFFF', frame:false}) 

     // and load the index.html of the app. 
     mainWindow.loadURL(url.format({ 
     pathname: path.join(__dirname+'/html/', 'main.html'), 
     protocol: 'file:', 
     slashes: true 
     })) 

     // Open the DevTools. 
     //mainWindow.webContents.openDevTools() 

     // Emitted when the window is closed. 
     mainWindow.on('closed', function() { 
     // Dereference the window object, usually you would store windows 
     // in an array if your app supports multi windows, this is the time 
     // when you should delete the corresponding element. 
     mainWindow = null 
     }) 

     /* Instance socket on create window */ 
     console.log('Try to connect'); 
     socketClient = net.connect({host:'192.16.122.3', port:9042}, () => { 
     // 'connect' listener 
     console.log('connected to server!'); 
     socketClient.write('world!\r\n'); 
     }); 

     socketClient.on('data', (data) => { 
     console.log(data.toString()); 
     var person = JSON.parse(data); 

     console.log('Hello '+person.prenom+"!"); 

     }); 
     socketClient.on('end',() => { 
     console.log('disconnected from server'); 
     }); 

     //mainWindow.openDevTools(); 
    } 
    app.on('before-quit',function(){ 
     socketClient.end(); 
    }) 

. 참조.

관련 문제