2016년 8월 21일 노트

6688 단어
tcp
  • TCP/IP는 서로 다른 통신 프로토콜의 대집합
  • TCP - 전송 제어 프로토콜
  • TCP는 애플리케이션에서 네트워크로의 데이터 전송 제어를 위해 사용됩니다.
  • 데이터 전송 전에 이들을 IP 패키지로 분할한 후 그들이 도착할 때 재구성한다.

  • IP-네트워크 프로토콜(Internet Protocol)
  • IP는 컴퓨터 간 채널
  • 을 담당합니다.
  • IP는 인터넷상에서 데이터 패키지를 발송하고 받는 것을 책임진다
  • 긴 링크
    socket 실시간 채팅 기술
  • 에 사용되는 모듈 socket.io

  • server.js var net = require('net'); var server = net.createServer((socket)=>{
    var time = getTime();//태그 추가//고객 목록에 추가 var name = clients.add(socket);
    //고객이 보낸 메시지를 수신하는 socket.on('data', function(data) {//guangbo(data, socket),//클라이언트로부터 정보를 받는console.log('데이터를 받았어---'), console.log(data.tostring());//소유자clients.sendAll(socket, data);});//고객이 socket 연결을 닫았습니다.('close',function(data) {console.log('고객이 갔습니다~'+socket.remoteAddress+'+socket.remotePort);//고객clients.del(socket) 삭제;//모두에게 clients.sendAll(socket,'누군가가 갔습니다! 현재 채팅 인원수:'+clients.length()';console.log('접속자가 있음, 고객지원 수량:'+clients.length()';console.log('접속자가 있음, 고객지원 수량:'+clients.length()';
       socket.write(time +'      ~'+ name + '!
    ' +' :'+clients.length()); clients.sendAll(socket,' ! :'+clients.length());

    }).on('error',(err)=>{ throw err; }); Clients =new Object(); Clients.list=[];//고객 리스트에 고객지원단 추가//socket 현재 연결
     clients.add = function(socket){
        socket.name=socket.remoteAddress+remoteAddress+":"+socket.remotePort;
        this.list.push(socket);
        return socket.name;
     }
    

    //클라이언트 목록에서 삭제//socket 현재 socket
    clients.del = function(socket) {console.log ('사용자가 간다! 그를 삭제한다!'), for(var i=0; i if(socket ==this.list[i]) {console.log ('사용자가 간다! 삭제했다~~'), this.list.splice(i, 1);}}}
    //모든 사람에게 메시지 보내기
    //socket 현재 연결//데이터 전송할 데이터
    clients.sndAll = funciton(socket.data) {console.log('모두에게 보내기 시작했다!!'), for(var i=1; i if(socket!=this.list[i]) {var o = this.list[i]];//socket이 if(o.writable) {console.log ('socket!=================socket!===========================this.log[i])) {= {consocket('모든 사람에게 보낼 수 있게 보내기 시작') ▲ 모든 사람에게 보내기 시작했다!!!!!!'), rite('----');}else {console.log ('socket이 효력을 상실했습니다: '+ o.name);//socket이 끊겼거나 하면 보낼 수 있습니다. 이 연결을 삭제해야 합니다.this.del (0);}}}}
    //Date의 확장으로 Date를 지정된 포맷의 String//월(M)·일(d)·시간(h)·분(m)·초(s)·분기(q)는 1-2개,/년(y)은 1-4개, 밀리초(S)는 1개(1-3자리 숫자)만 사용할 수 있다//예://(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423//(new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.Format = function (fmt) {//author: meizz
    var 0={"M+":this.getMonth()+1, "d+":this.getDate(),//일 "h+":this.getHours(),//시간 "m+":this.getMinutes(),//분 "s+":this.getSeconds(),//s"q+":Math.floor(this.getMonth()+3)//3분기 "s.get.gisonds"(Millids),
    if(/(y+)/.test(fmt))fmt=fmt.reqlace(ReqExp.$1,(this.getFullYear()+"").4-RegExp.$1.length)); for(var k in o) if(new RegExp("("+k+")").test(fmt)) fmt = fmt.replace(RegExp.$1(RegExp.$1.length==1)?(o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
    function getTime(){ return new Date().Format("yyyy-MM-dd hh:mm:ss"); }
    //채팅 서버 오픈~~server.listen({ host: 'localhost', port: 8888, exclusive: true }); ===================== client.js const net = require('net'); const client = net.connect({port:8080}, ()=>{console.log('연결됐다');};client.('데이터', (data)=>{console.log('데이터 받기'), console.log(data.tostring();}),client.('end', ()=>{console.log('끊겼어'), rl.close();}),
    const readline = require('readline'); const rl = readline.createInterface(process.stdin,process.stdout); console.log('다인 채팅방');console.log('88. 그만 얘기하자');rl.setPrompt('뭐라도 말해봐~>');rl.prompt();
    rl.('line', (line)=>{switch(line.trim(){switch(line.trim()) {case'88':console.log('다음에 또 놀러오세요~~!'), rl.close(), break;default:s=line.trim(), client.write(s+'\r'),
       rl.setPrompt('       ~> ');
       rl.prompt();
     break;
    

    } }).on('close', ()=> {console.log('돌아와서 계속 얘기하세요.');process.exit(0);});===============chat.js
    var express = require('express'); var router = express.Router(); var socket_io = require('socket.io'); var db = require('../model/mongoose');//GET users listing. router.get('/', function (req, res, next) { res.send('respond with a resource'); });
    router.prepareSocketIO = function(server) {var io = socket io.listen(server), var clientList = [], var interlocutors = [], io.sockets.on('connection', function(socket) {//연결
        clientList.push(socket);
        console.log("    :" + clientList.length);
        console.log("    " + socket);
        socket.on('join', function (user) {//    
    
            socket.user = user;
    
            var socketusers ={ user_name:user}
            db.socketuserModel.findOne(socketusers,function(error, result){
                console.log('he'+result+error);
                if(result ==null ){
    
                    db.socketuserModel.create(socketusers, function(error){});
    
                }
            });
    
            //socket.emit('state', 'SERVER', true);
            //socket.broadcast.emit('state', 'SERVER', user + '   ');//    
        });
        socket.on('sendMSG', function (msg) {//         
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth()+1;
            var day = date.getDate();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
            var times = year+' '+month+' '+day+'  '+hour+':'+minute+':'+second;
            var socketusersmsg ={ user_name:socket.user,send_msg:msg,send_time:times}
            db.socketusermsgModel.create(socketusersmsg, function(error){});
            socket.emit('chat', socket.user, msg);
            socket.broadcast.emit('chat', socket.user, msg);//    
        });
    
         socket.on('getMSG', function (msg) {//      
    
            var usersmsg ={ user_name:socket.user}
            db.socketusermsgModel.find(usersmsg,function(error, result){
                console.log('he'+result+error);
                for(var i=0;i

    };
    module.exports = router;

    좋은 웹페이지 즐겨찾기