Java与PHP进行socket通信

背景:Java端作为服务端,PHP端作为客户端,在之前一篇文章中说了下PHP作为客户端如何与Java端进行通信。由于业务需要,socket必须等待服务端处理完成,并返回处理结果给PHP端。在这里主要说明一下Java端如何处理的,不足之处,望指正。

ServerSocket serverSocket = new ServerSocket(port); //创建绑定到特定端口的服务器套接字
Socket socket = serverSocket.accept(); //侦听并接受到此套接字的连接

InputStream inputStream = socket.getInputStream();
StringBuilder sb = new StringBuilder();

byte[] packetLength = new byte[4];
inputStream.read(packetLength, 0, 4);            //首先从套接字中读取4字节的数据长度
int target = byteToint(packetLength);            //这里将字节数组转换成整数
System.out.println("message size:" + target);

byte[] bytes = new byte[target];
inputStream.read(bytes);                            //读取指定长度的数据
sb.append(new String(bytes, 0, target, "UTF-8"));
System.out.println("get message " + sb);

String result = "has receive message";
OutputStream outputStream = socket.getOutputStream();
int responseLength =  result.getBytes().length;        //这个地方的长度,一定要是字节数组的长度,否则如果字符串中包含中文,接收端接收数据会不完整           
byte[] targets = intTobyte(responseLength);
outputStream.write(targets);                          //首先发送4个字节的数据大小
outputStream.write(result.getBytes());                //再发送真正的数据

outputStream.flush();
outputStream.close();
inputStream.close();
socket.close();

上述代码需要处异常,而且代码中的byteToint和intTobyte这两个函数非原创,是其他博主的劳动成果,感谢这位作者,原文地址https://www.cnblogs.com/langren1992/p/4717241.html

猜你喜欢

转载自blog.csdn.net/u013385554/article/details/81517521
今日推荐