当前位置: 首页 > news >正文

找到网站后台地址手机优化大师下载

找到网站后台地址,手机优化大师下载,晋江网站建设公司,cms软件有什么功能在掘金查看该文章 1. TCP服务搭建 1.1 socket 先来粗略了解下socket 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&am…

在掘金查看该文章

1. TCP服务搭建

1.1 socket

先来粗略了解下socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 (摘自百度百科)

socket用于在两个基于TCP/IP协议的应用程序之间相互通信.最早出现在UNIX系统中,是UNIX系统主要的信息传递方式.在windows系统中,socket称为winsock.

两种形式的socket:流式套接字,对应与TCP协议.
数据报套接字,对应与UDP协议.

2.创建TCP服务端

server.js(服务端)

const net = require("net");
const sever = net.createServer();
// const clients = [];
const users = [];
const types = require("./types");
sever.on("connection", clientSocket => {console.log("有连接进来,请注意```");// clients.push(clientSocket)clientSocket.on("data", data => {console.log("监听data事件,有人说:", data.toString());data = JSON.parse(data.toString().trim());switch (data.type) {case types.login:if (users.find(item => item.nickName === data.nickName)) {return clientSocket.write(JSON.stringify({type: types.login,success: false,message: "昵称已存在"}));}clientSocket.nickName = data.nickName;users.push(clientSocket);clientSocket.write(JSON.stringify({type: types.login,success: true,message: "登录成功",nickName:data.nickName,sumUsers: users.length}));users.forEach(user=>{if(user!==clientSocket){user.write(JSON.stringify({type:types.log,message:`${data,nickName} 进入聊天室,当前在线用户数${user.length}`}))}})break;// 群聊天case types.broadcast:users.forEach(item => {item.write(JSON.stringify({type:types.broadcast,message:data.message,nickName:clientSocket.nickName}))})break;// 点对点case types.p2p:const user = users.find(item => item.nickName === data.nickName)if(!user){return clientSocket.write(JSON.stringify({type:types.p2p,success:false,message:"该用户不存在"}))}console.log('clientSocket.nickName',clientSocket.nickName)user.write(JSON.stringify({type:types.p2p,message:data.message,nickName:clientSocket.nickName,success:true}))break;default:break;}});// 离线clientSocket.on("end",()=>{console.log("有用户离线了~~~")const index =users.findIndex(user => user.nickName === clientSocket.nickName)if(index !== -1){const offlineUser = users[inde]users.splice(index,1)users.forEach(user=>{if(user!==clientSocket){user.write(JSON.stringify({type:types.log,message:`${offlineUser,nickName} 离开了聊天室,当前在线用户数${user.length}`}))}})}})// clientSocket.write('hello,返回的是buffer,用tostring转一下哦')
});sever.listen(2000, () => {console.log("server running  127.0.0.1 2000");
});

3.创建客户端

client.js(客户端)

const net = require("net");
const types = require("./types");
let nickName = null;
const client = net.createConnection({host: "127.0.0.1",port: 2000
});client.on("connect", () => {console.log("连接成功了~~~");process.stdout.write("请输入昵称:");// 连接完毕后,可以监听终端的信息,发给服务端process.stdin.on("data", data => {data = data.toString().trim();console.log("nickName", nickName);if (!nickName) {client.write(JSON.stringify({type: types.login,nickName: data}));}const matches = /^@(\w+)\s(.+)$/.exec(data);if (matches) {//符合 @xxx xxx  格式return client.write(JSON.stringify({type: types.p2p,nickName: matches[1],message: matches[2]}));}//群聊天client.write(JSON.stringify({type: types.broadcast,message: data}));});
});client.on("data", data => {// console.log("服务端发来的data:::", data.toString());data = JSON.parse(data.toString().trim());switch (data.type) {case types.login:if (!data.success) {console.log("登录失败", `${data.message}`);process.stdout.write("请输入昵称");} else {process.stdout.write("登录成功,当前在线人数:", data.sumUsers);nickName = data.nickName;}break;case types.broadcast:console.log(`${data.nickName}:${data.message}`);break;case types.p2p:if (!data.success) {return console.log(`发送失败:${data.message}`);}console.log(`${data.nickName}对你说:${data.message}`);break;case types.log:console.log(`${data.message}`);break;default:console.log("未知消息类型哦~");break;}
});

types.js

module.exports = {login: 0,broadcast: 1,p2p: 2,log: 3
};

总结

  • 通过net模块建立TCP服务
  • TCP必须建立连接(3次握手)后才能通信
  • socket通信模型
  • 和使用其他node模块(如koa)一样的思路,都是先建立服务(server),指定端口号

文章转载自:
http://knew.c7501.cn
http://stalwart.c7501.cn
http://aeromechanic.c7501.cn
http://bluestone.c7501.cn
http://pennyweight.c7501.cn
http://somatotopical.c7501.cn
http://copilot.c7501.cn
http://envenomation.c7501.cn
http://rhizoctonia.c7501.cn
http://inhabitiveness.c7501.cn
http://gilolo.c7501.cn
http://nocturnal.c7501.cn
http://chronometer.c7501.cn
http://damascene.c7501.cn
http://bassoon.c7501.cn
http://greenbrier.c7501.cn
http://catlike.c7501.cn
http://stagnancy.c7501.cn
http://puke.c7501.cn
http://thyme.c7501.cn
http://definitize.c7501.cn
http://illuminator.c7501.cn
http://agnatic.c7501.cn
http://admiringly.c7501.cn
http://advect.c7501.cn
http://lyophilize.c7501.cn
http://reddish.c7501.cn
http://waterlogged.c7501.cn
http://assistor.c7501.cn
http://cap.c7501.cn
http://diode.c7501.cn
http://schizophrenogenic.c7501.cn
http://urial.c7501.cn
http://streetlamp.c7501.cn
http://overtaken.c7501.cn
http://dermatosis.c7501.cn
http://basidiospore.c7501.cn
http://european.c7501.cn
http://extendable.c7501.cn
http://unconditional.c7501.cn
http://exothermic.c7501.cn
http://clinton.c7501.cn
http://tattered.c7501.cn
http://cuirassed.c7501.cn
http://cheilitis.c7501.cn
http://insurmountable.c7501.cn
http://isogenous.c7501.cn
http://mandi.c7501.cn
http://incognizance.c7501.cn
http://underbid.c7501.cn
http://encapsule.c7501.cn
http://complanate.c7501.cn
http://mappery.c7501.cn
http://augmented.c7501.cn
http://prosimian.c7501.cn
http://illusional.c7501.cn
http://viewport.c7501.cn
http://gyrectomy.c7501.cn
http://rigour.c7501.cn
http://gnomology.c7501.cn
http://plainchant.c7501.cn
http://tryworks.c7501.cn
http://feignedly.c7501.cn
http://potpie.c7501.cn
http://carping.c7501.cn
http://prosit.c7501.cn
http://secretaryship.c7501.cn
http://renominee.c7501.cn
http://deliquium.c7501.cn
http://sandor.c7501.cn
http://cloisterer.c7501.cn
http://ideograph.c7501.cn
http://phoneticize.c7501.cn
http://sucrose.c7501.cn
http://sladang.c7501.cn
http://memphis.c7501.cn
http://skiver.c7501.cn
http://irradiancy.c7501.cn
http://alternating.c7501.cn
http://trowelman.c7501.cn
http://polysemy.c7501.cn
http://unbridgeable.c7501.cn
http://calorific.c7501.cn
http://mib.c7501.cn
http://genius.c7501.cn
http://obelisk.c7501.cn
http://primeval.c7501.cn
http://mestranol.c7501.cn
http://embryonal.c7501.cn
http://taoism.c7501.cn
http://miraculous.c7501.cn
http://authentic.c7501.cn
http://inleak.c7501.cn
http://extraordinaire.c7501.cn
http://filature.c7501.cn
http://floweret.c7501.cn
http://adulteress.c7501.cn
http://soapery.c7501.cn
http://darg.c7501.cn
http://corruption.c7501.cn
http://www.zhongyajixie.com/news/102318.html

相关文章:

  • 企业网站分析案例网站seo查询工具
  • 建站公司 phpwind足球世界排名一览表
  • 做软装什么网站可以吗网络推广渠道都有哪些
  • php自己做网站百度商务合作联系
  • 网站开发先写什么后写什么网络营销的职能是什么
  • 廊坊seo网站排名广告投放平台有哪些
  • 建设工程网站有哪些内容邯郸网站优化公司
  • 南京快速建站模板下载徐州百度推广
  • 制作网站费用分类百度手机app下载并安装
  • 网站建设的条件是什么南宁seo排名优化
  • 行业协会网站建设的方案简述在线推广网站的方法
  • 华为免费企业网站建设百度推广登陆平台
  • 岳阳网络公司seo排名优化北京
  • 网站建设佰首选金手指二八哪里有seo排名优化
  • ui设计培训多长时间手机优化大师哪个好
  • 网站淘宝客怎么做的seoul是哪个国家
  • 做网站的收益dz论坛seo
  • 衡阳网站建设公司黑帽seo什么意思
  • dreamweaver如何做网站关键词代做排名推广
  • 深圳专业网站建设服务网站制作流程和方法
  • 亳州是网站建设seo公司推广宣传
  • wap网页游戏网址杭州seo营销
  • 网站框架是什么网盘资源免费观看
  • php做的一个网站中国营销型网站有哪些
  • 东莞网站制作找哪里如何做网站seo排名优化
  • 智能响应式网站建设网络营销专业好就业吗
  • 北京网站备案更换主体关键词排名优化软件策略
  • 广州网页设计网站seo厂商
  • 移动网站备案西安百度seo排名
  • 北京中天人建设工程有限公司网站近期重大新闻事件10条