服务端的程序员一开始都是做简单的逻辑开始,然后一点点扩展自己对搭建一个系统的了解,当我们完成了大量的逻辑编程的时候,不知道你是否考虑过这样一个问题,我们的服务器是如何与外部对接的,就拿一个网页游戏来讲,游戏在整个进行的过程中我们是通过什么方式让客户端和服务器互联通信的,说到通信,首先想到的是协议的选择,既然是网页游戏,我们肯定会首先想到的是http,因为许多时候我们都是在使用浏览器,许多游戏现在有了微端,但是原理还是一样的,只不过是制作了一个只针对游戏进行通信的你无法看到地址栏的浏览器而已,在视觉上,好像我们在玩端游一样,微端确实是一个聪明的想法,也留住了许多玩家!言归正传,http协议在网页游戏中确实是一个必不可少的协议,但是http的使用应该只停留在客户端和玩家的层面,玩家通过http协议告诉客户端他想要完成那些操作,然后客户端再去加载资源并且按照相应的规则转换请求发给服务端!
图片比较难看,将就一下,就是按照这种传输方式来弄,在客户端处理上,并不是一直发送http,但是我们不考虑这些问题,这个时候实际上我们涉及的就是比较底层的数据传输了,两台服务器之间的通信依据就是ip地址,通过ip地址为依据进行的数据传输,我们第一个想到的就是tcp/ip协议,其实像我们这类服务器开发的程序员,一般用不到其他的网络层协议,如果你想了解,可以百度一下网络层协议。
我们现在理清了整个游戏的基本通信过程,剩下的就是我们该怎么样去实现链接处理的问题(gen_tcp)
的时候再说吧
相关推荐
在Erlang中,TCP客户端连接管理器,如"tcp_client",是用于处理网络通信的常见组件,它负责建立、管理和关闭到服务器的TCP连接。下面我们将详细探讨Erlang中的TCP客户端连接管理以及其在实际应用中的实现。 1. **...
Erlang SMTP客户端和服务器库。 使命 提供通用的Erlang SMTP服务器框架,可以通过OTP样式的回调模块进行扩展。 还包括一个纯Erlang SMTP客户端。 目的是使在Erlang中收发电子邮件变得容易,而又省却POP / IMAP的...
3. 多线程:Java客户端可能采用多线程技术,一个线程用于接收服务器的消息,另一个线程负责处理用户输入并发送到服务器,保证了用户界面的响应性和服务器通信的并发性。 4. 用户界面:客户端通常会有一个友好的图形...
由于Flash的安全策略,如果需要从Flash客户端与非同一域名的服务器通信,必须通过843端口接收政策文件。在本项目中,843端口的使用表明系统可能需要支持Flash客户端通过Socket进行通信。 5. **跨语言通信**: 在...
{client, ClientPid, Request} -> % 接收客户端发送的消息 handle_request(Request), server_loop() % 继续监听 end. ``` 3. **处理请求**:`handle_request/1`函数用于处理不同类型的请求,根据`Request`进行...
Erlang服务器可以监听客户端连接,接收消息,并将它们分发到正确的接收者。 - **客户端**:可能分为Erlang和Java两个版本。Erlang客户端可以直接与Erlang服务器通信,而Java客户端则通过Jinterface与Erlang服务器...
1. **服务器主程序**(如`server.erl`):这是整个聊天系统的入口,负责监听新连接、处理客户端消息和广播消息到其他客户端。 2. **进程管理**:可能会有一个模块用于创建和管理聊天室内的用户进程,每个用户进程...
这种架构通常包括一个或多个服务器进程,它们接收客户端的请求并处理这些请求,然后返回结果。Erlang的轻量级进程模型使得构建这样的系统变得高效且易于维护。 在Erlang中,客户端服务器模式的实现主要基于以下概念...
在Erlang客户端中,发布消息是通过`publish`函数完成,它将消息发送到指定的交换机,然后由交换机根据绑定规则将消息路由到相应的队列。同时,`consume`函数用于从队列中接收消息,通常在回调函数中处理接收到的消息...
2. **消息处理模块**:接收用户输入,可能包含消息的编码、解码,以及存储和转发消息到目标用户。Erlang的OTP(Open Telecom Platform)库提供了一套完整的工具来处理这类任务。 3. **网络通信模块**:使用Erlang的...
erdis_smart_sub eredis_smart_sub是eredis之上的用于在 pubsub 上下文中的几个订阅者... 在 eredis 之上写一个层,其中一个进程将接收所有消息并将它们发送回正在侦听相应通道的进程。 eredis_smart_sub 实现了第二种
Java客户端库允许开发者在Java应用程序中发送和接收消息,通过AMQP协议与RabbitMQ服务器进行通信。这个项目包含的jar包可能就是`rabbitmq-client.jar`,它是RabbitMQ官方提供的Java客户端库,包含了所有必要的API和...
“hackney:Erlang中的简单HTTP客户端”表明这是一个专注于Erlang编程语言的HTTP客户端库,名为“hackney”。这个库的主要功能是为Erlang开发者提供方便、简洁的方式来发送HTTP请求并接收响应。 **描述解析:** ...
2. 消息队列:存储待发送和已接收的消息,Erlang的进程间通信(IPC)机制非常适合这样的任务。 3. 广播功能:将接收到的消息广播给所有连接的用户,这可以通过发布-订阅模式实现。 4. 客户端接口:定义WebSocket消息...
同时,学习如何通过AMQP协议或各种编程语言的客户端库(如Java的RabbitMQ Java Client,Python的pika等)来发送和接收消息是必不可少的。 在实际应用中,RabbitMQ可用于多种场景,如任务调度、日志收集、事件驱动...
当一个用户发送消息时,gen_server会接收该请求,处理消息(可能包括验证身份、存储到日志等),然后将消息广播给其他在线用户。 在压缩包文件名simsunny_chat中,我们可以推测这是聊天室项目的名字。该项目可能...
Erlang TCP服务器是用Erlang编程语言实现的一种网络通信服务,它允许程序通过TCP协议接收和发送数据。在Erlang中,构建TCP服务器通常涉及到以下关键知识点: 1. **Erlang OTP(Open Telecom Platform)**:Erlang ...
- **并发性**:Erlang进程模型使得在单个节点上并行运行大量轻量级进程成为可能,这些进程通过消息传递进行通信,减少了竞争条件和同步问题。 - **热代码替换**:Erlang支持在运行时更新和升级代码,无需重启服务,...
例如,你可以创建一个处理函数,将接收到的JSON消息解析后转化为SQL插入语句,然后通过emysql执行。 总结,Erlang通过结合Websocket协议,可以实现高效、实时的客户端与服务器通信。配合rebar3构建工具,可以便捷地...
- **Socket操作**:服务器需要监听特定端口接收客户端的连接请求。一旦接收到连接请求,服务器应该创建一个新的Socket来处理这个连接。 - **进程与消息**:在Erlang中,进程间的通信是通过消息传递完成的。但是,...