问题描述
- 使用socket通信服务端如何处理客户端请求
-
场景如下:
一个服务端,一个客户端通过socket连接服务端,假如客户端要请求服务端做一件事(如调用服务端A类的a方法),
因为socket传输的是字符串,所以我现在的做法是让客户端传一个标识符a到服务端,然后服务端
通过判断传过来的是a则调用A类的a方法,
如果我要执行A类的b方法,则传b过去再判断我想问的是有没有更好的解决方案,或现成的框架可用
解决方案
如果你这样的需求,我觉得更适合HTTP。也许玩C++的更习惯于socket。之前做过一个IM的DEMO,一直用的socket,这样服务端需要一个管理器,去处理和分发处理。其实这样和HTTP没什么区别了,还更麻烦了,我正想要把推送和即时消息之外的转到HTTP请求。
解决方案二:
这个就是i一个命令解析处理的过程 自己定义规则处理i就可以了
解决方案三:
客户端发送的信息在服务端接收都是字符串,所以要调用不同的方法,就必须跟据客户端输入的字符串来判断怎么执行代码,规则可以自己定义。
在类中定义一个静态字符串private static String str="返回值";
str=new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine();
if("a方法的名称".equals(str)){
执行a方法
}else if("b方法的名称".equals(str)){
执行b方法;
}......客户端输入的要是调用的方法名称就可以了。
这种方法逻辑上是可以得,你自己在具体用途具体分析吧。
解决方案四:
客户端解析用户命令,转换成你的服务端能够理解的字串,传给服务端按照相同的规则解析出来就好了吧。我也在尝试做C/S的东西,个人理解
解决方案五:
这个跟软件是C/S还是B/S没有关系的啊,就是Socket的应用,约定好通信规则即你传什么字符,我调用什么方法就可以了。
而且B/S本质也是Socket 的。这就是一个简单的java socket编程的应用,服务器端解析客户端的请求数据,利用java反射调用相应的方法,并将处理结果返回给客户端。一般的Socket入门的demo都能来改改就用的,就是修改Server收到数据的后的处理代码就可以了。