以JSON串的方式来处理 socket 之间的数据传递,后续可以添加密钥验证,用户验证等相关业务逻辑。
Java socket 客户端代码
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
public class DemoSocketClent {
public static void main(String[] args) {
demo_login();
}
private static String send(String str){
try {
// 要连接的服务端IP地址和端口
String host = "192.168.1.173";
int port = 8089;
// 与服务端建立连接
Socket socket = new Socket(host, port);
// 建立连接后获得输出流
System.out.println("send message:" + str);
// 发送给服务器的数据
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF(str);
// 接收服务器的返回数据
DataInputStream in = new DataInputStream(socket.getInputStream());
String resultmsg = in.readUTF();
System.out.println("receive messages:" + resultmsg);
socket.close();
return resultmsg;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static void demo_login(){
Map<String, Object> reqParam = new HashMap<String, Object>();
reqParam.put("businseId", "camera_login");
reqParam.put("param", "");
String str = JSONObject.fromObject(reqParam).toString();
String rst = send(str);
System.out.println("receive messages:" + rst);
}
}
java socket 服务端代码
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import hansy.com.dh.invok.InvokSDK;
import net.sf.json.JSONObject;
public class HansySocketServer implements Runnable {
public static void main(String[] args) {
HansySocketServer serverApp = new HansySocketServer();
boolean flag = InvokSDK.camera_init();
if(flag){
System.out.println("camera init success!");
}else{
System.err.println("camera init error!");
}
serverApp.run();
}
@Override
public void run() {
try {
int port = 8089;
ServerSocket server = new ServerSocket(port);
while (true) {
//等待client的请求
System.out.println("waiting client catenation...");
Socket socket = server.accept();
// 接收客户端的数据
DataInputStream in = new DataInputStream(socket.getInputStream());
String string = in.readUTF();
System.out.println("client msg:" + string);
Map<String, Object> rst = new HashMap<>();
rst.put("code", "success");
rst.put("data", "成功请求到Socket 服务端");
rst.put("errMsg", "");
// 发送给客户端数据
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String rstString = JSONObject.fromObject(rst).toString();
System.out.println("response msg:" + rstString);
out.writeUTF(rstString);
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}