코드는 다음과 같습니다.
1. 먼저 관련 변수를 선언합니다.
private ServerSocket serverSocket = null;
private int ServerPort = 29898;
private Socket socket = null;
private OutputStream outputStream = null;
private InputStream inputStream = null;
private PrintWriter printWriter = null;
private BufferedReader reader = null;
2. 핵심 코드 작성:
new Thread(new Runnable() {
@Override
public void run() {
try {
serverSocket = new ServerSocket(ServerPort);
Log.d(TAG,"Create A ServerSocket...");
socket = serverSocket.accept();
Log.d(TAG, "Client is Connected...");
outputStream = socket.getOutputStream();
inputStream = socket.getInputStream();
printWriter = new PrintWriter(outputStream,true);
reader = new BufferedReader(new InputStreamReader(inputStream));
if (isAcceptDevice){
//作为接收方,进行一些操作
while (true){
//生成Json字符串格式的JSON对象
String message = reader.readLine();
JSONObject jsonObject= null;
try {
jsonObject = new JSONObject(message);
String AssisDeviceName = jsonObject.getString("devicename");
String AssisTime = jsonObject.getString("time");
} catch (JSONException e) {
e.printStackTrace();
Log.d(TAG, "Reading Jsonobject Error:"+e);
}
}
}else{
if (socket.isConnected()){
if (!socket.isOutputShutdown()){
//向接收方发送消息
JSONObject jsonObject=new JSONObject();
try {
jsonObject.put("devicename", MainActivity.MyDeviceName);
jsonObject.put("time", time);
} catch (JSONException e) {
e.printStackTrace();
}
result=jsonObject.toString();
printWriter.println(result);
printWriter.flush();
Log.d(TAG,"Send:"+result);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
}
}
}).start();
참고:
1. 시간이 많이 걸리는 데이터 전송 작업의 영향을 줄이기 위해 새 스레드를 만드는 것이 가장 좋습니다.
2. 위 코드는 "장치 이름" 및 "현재 시간"을 전송하는 예일 뿐이며 문자열의 필요에 따라 Json에 데이터를 추가합니다.
———————————————————————————————
마지막으로 개인 공개 계정을 게시합니다. WeChat에서 "Chaqian"을 검색하거나 아래 사진을 스캔하세요. 보통 프로그래밍 관련 글이 업데이트 될 예정이니 많은 관심 부탁드립니다~