hekewangzi
hekewangzi
2016-03-15 13:40
采纳率: 100%
浏览 1.9k

使用socket通信服务端如何处理客户端请求

场景如下:
一个服务端,一个客户端通过socket连接服务端,假如客户端要请求服务端做一件事(如调用服务端A类的a方法),
因为socket传输的是字符串,所以我现在的做法是让客户端传一个标识符a到服务端,然后服务端
通过判断传过来的是a则调用A类的a方法,
如果我要执行A类的b方法,则传b过去再判断

我想问的是有没有更好的解决方案,或现成的框架可用

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • u014481698
    风聆水净 2016-03-15 13:49
    已采纳

    如果你这样的需求,我觉得更适合HTTP。也许玩C++的更习惯于socket。之前做过一个IM的DEMO,一直用的socket,这样服务端需要一个管理器,去处理和分发处理。其实这样和HTTP没什么区别了,还更麻烦了,我正想要把推送和即时消息之外的转到HTTP请求。

    点赞 评论
  • oyljerry
    oyljerry 2016-03-15 13:49

    这个就是i一个命令解析处理的过程 自己定义规则处理i就可以了

    点赞 评论
  • xionglangs
    编程爱好者熊浪 2016-03-15 14:27

    客户端发送的信息在服务端接收都是字符串,所以要调用不同的方法,就必须跟据客户端输入的字符串来判断怎么执行代码,规则可以自己定义。
    在类中定义一个静态字符串private static String str="返回值";
    str=new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine();
    if("a方法的名称".equals(str)){
    执行a方法
    }else if("b方法的名称".equals(str)){
    执行b方法;
    }......客户端输入的要是调用的方法名称就可以了。
    这种方法逻辑上是可以得,你自己在具体用途具体分析吧。

    点赞 评论
  • skaitiaozhan
    skaitiaozhan 2016-03-15 16:18

    客户端解析用户命令,转换成你的服务端能够理解的字串,传给服务端按照相同的规则解析出来就好了吧。我也在尝试做C/S的东西,个人理解

    点赞 评论
  • wojiushiwo945you
    毕小宝 2016-03-16 02:31

    这个跟软件是C/S还是B/S没有关系的啊,就是Socket的应用,约定好通信规则即你传什么字符,我调用什么方法就可以了。
    而且B/S本质也是Socket 的。这就是一个简单的java socket编程的应用,服务器端解析客户端的请求数据,利用java反射调用相应的方法,并将处理结果返回给客户端。一般的Socket入门的demo都能来改改就用的,就是修改Server收到数据的后的处理代码就可以了。

    点赞 评论

相关推荐