java socket php_Web架构(二)PHP Socket与Java ServerSocket交互

原标题:Web架构(二)PHP Socket与Java ServerSocket交互

063c96551942e4d2f450087043ef73d4.bmp

Web架构(二)PHP Socket与Java ServerSocket交互

现在流行微服务,SOA服务治理,RPC.都是基于某种协议,进行数据交换.

前边使用php进行数据渲染,调用后端的接口获取数据,前后端分离比较灵活,中间的数据交换协议要统一一致起来。前端不用关心后端是什么语言,只需要通过约定的协议调用接口即可。

本文讲述Java使用服务器端Socket提供服务,PHP使用Socket请求服务端,进行数据交互。

效果: php页面

b6e549afd71792be6552b402b2b2b9f5.png

mysql数据库

0ed5896d8c9af156f00bf0a80af83ea2.png

java控制台

9b9400a00d6b4eee00dd84db12e828d1.png

代码

Server.java

package cn .pangpython.mybase.rpc;import cn .pangpython.mybase.dbop.MyBatis;import cn .pangpython.mybase.dbop.User;import java .io.* ;import java .net.ServerSocket;import java .net.Socket;public class Server { public static void main(String[] args) throws IOException { //创建服务端socket 使用 8089端口 ServerSocket ss = new ServerSocket( 8089) ;System .out.println( "启动服务器....") ;while (true) { //开启监听 Socket s = ss .accept() ;System .out.println( "客户端:"+ s .getInetAddress() .getLocalHost() + "已连接到服务器") ;BufferedReader br = new BufferedReader(new InputStreamReader(s .getInputStream())) ;//读取客户端发送来的消息 String mess = mess = br .readLine() ;System .out.println( "客户端发送的信息:"+ mess) ;// while ((mess = br .readLine())!= null){// } //根据传过来的userid去数据库查询user,返回 String userId = mess .substring(mess .indexOf( "=") + 1) ;System .out.println( "useris:"+ userId) ;MyBatis myBatis = new MyBatis() ;int uid = Integer .parseInt(userId) ;User user = myBatis .getUser(uid) ;//返回数据 if (user != null) { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s .getOutputStream())) ;bw .write( "

User:"+ user .toString() + "

n") ;bw .flush() ;bw .close() ;} br .close() ;s .close() ;} }}

index.php

<?php //创建socket$socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);socket_connect($socket, '127.0.0.1', 8089);//要发送的内容$send= <<";//发送给服务器数据socket_write($socket, $send, strlen($send));//接受服务器返回的数据while($str= socket_read($socket, 1024)){ echo'receive:
'; echo$str;}socket_close($socket);

全部代码:

https://github.com/pangPython/mybase

数据库操作使用mybatis。

后面会学习dubbo的架构。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值