对于一个完全没接触过socket和多线程的新手,开发一个http接口要多久呢?首先利用socket和服务端通信,然后再对发送的报文做处理,最后做一个http接口让别人使用,整个功能实现下来要多久呢?报文是自定义格式的!
解决方案 »
- java.sql.SQLException: Invalid column type
- s2sh使用cos上传问题
- java与mysql数据通信错误:com.mysql.jdbc.MysqlDataTruncation
- 请求帮助 CORBA NO_PERMISSION 0
- 代码无法更新的问题,哪位有个类似经历的帮帮我
- 在jsp页面中,怎样在struts2标签内加入从java传过来的默认值?急~~~~~在线等!
- 棋牌游戏原理,神仙快显灵,我来拜佛了.........
- Hibernate Session.flush() 的疑惑
- 关于Filter截取到response返回数据的问题
- 为什么new kyro对象时候提示路径下找不到这个类,导包了
- svn中struts配置文件不能更新是咋回事 求高手帮助!
- 帮我讲解这段生成缩略图的代码
首先, 第一步和第二布网上都有现成的例子, 可以直接拿过来, 稍作修改。 http接口的协议应该是要跟对方的商议之后而定的, 根据他们的需求, 定义个接口便可。 整个流程下来不难
如果是大量链接并发管理的话,建议先去搜下MINA框架的相关支持,掌握下基本例子的编写,熟悉过程大约需要一周,剩下实际开发就很快了,接口都是现成的,只写逻辑就行。
首先, 第一步和第二布网上都有现成的例子, 可以直接拿过来, 稍作修改。 http接口的协议应该是要跟对方的商议之后而定的, 根据他们的需求, 定义个接口便可。 整个流程下来不难
帮忙看下我上面的那个问题可以吗?
按我的理解,客户端与服务器之间的通讯协议应该是双方约定的私有通讯协议(即数据排列格式由双方约定),设计者在制定协议格式时,必须考虑协议的唯一标识性,即每条通讯报文都具有唯一的特征属性(比如报文编号)。楼主如果作为客户端向服务器发送请求,只要在发送之前,将报文内容存到内存中即可,当收到服务器的反馈报文时,根据报文编号找到对应的请求报文(反馈报文与请求报文编号一致,或有其他关联规则)。
另外,这个问题和多线程没有关系,就算开再多的线程,也是使用同一条TCP链路进行通讯,每条线程读取到的内容是随机的,所以靠多线去进行报文对应,没有意义。然后就是关于程序通讯机制的问题了:
本例中双方通讯是使用的TCP方式,也就是全双工长连接的方式。理论上,任何使用TCP方式通讯的链路,都需要使用心跳机制来确定对方的在线情况,因为TCP是保持连接的,而实际运行时此前建立的连接可能被中断,从而导致后续的发送请求失败。正常的TCP链路close,程序是可以监测到的(关闭时,系统会自动发送一条链路断开的报文),但是异常断开的话,程序是监测不到的(如直接拔掉网线、交换机故障等),对方会仍然认为链路可用,所以需要使用心跳机制,定时发送报文,证明双方状态正常。
所以楼主需要使用异步的方式来管理通讯。
MINA提供了现成的框架,对用户而言,网络通讯变成了触发式,不再需要用户显式的死循环轮询读socket了,当指定链路收到数据报文的时候,会自动调用指定的接口函数,楼主只要在那里写下相关逻辑即可。