Unix域套接字

来源:互联网 发布:java培训后找不到工作 编辑:程序博客网 时间:2024/05/18 06:12
客户端:
int set_screen_time_out(int interval)
{
 char tmpbuff[20]={0};
 sprintf(tmpbuff, "%d", interval);
     // Socket to listen on for incomming framework connections
     if ((fw_socket = socket_local_client(TS_CAL_SOCKET,
 ANDROID_SOCKET_NAMESPACE_ABSTRACT,
               SOCK_STREAM)) < 0) {
         LOGE("Obtaining file descriptor socket '%s' failed: %s",
         TS_CAL_SOCKET, strerror(errno));
         return  -1;
     }
     
     LOGI("send to fw_socket :%s %d", tmpbuff, strlen(tmpbuff));
   
     if(send(fw_socket, tmpbuff, strlen(tmpbuff), 0) <= 0 )
     {
      LOGE("send data to server : '%s' failed", strerror(errno));
      close(fw_socket);
      return -1;
     }
     
     close(fw_socket);
   
     return 0;
   
}
服务端:

public class TSCalibrateSocket implements Runnable
{
 public final String TS_SOCKET = "TS_CALIBRATE_SOCKET";
 public static final int SERVERPORT = 50113;
 private LocalServerSocket mServerSocket;
 private final String TAG = "TS_CALIBRATE";
 private byte[] buffer = new byte[100];
 private Context mContext;
 private static PowerManager.WakeLock sWakeLock;
 private final String WAKELOCK_TAG = "TS_CALIBRATE";
 private PowerManager powerManager;
 private final String fileName = "/data/etc/pointercal";
 
 TSCalibrateSocket(Context context)
 {
  mContext = context;
  try{
   mServerSocket = new LocalServerSocket(TS_SOCKET);
  }catch(Exception ex)
  {
    ex.printStackTrace(); 
  }
         powerManager =
(PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
         
         sWakeLock =
powerManager.newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,
WAKELOCK_TAG);  
  
 }
 
 public void run()
 {//listen thread is working.
 
  Log.i(TAG,
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
  boolean exists = (new File(fileName)).exists();
 if(exists){
  Log.d(TAG, "file is exsits.");
    Log.i(TAG,
"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
  return;
 }
   Log.i(TAG,
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
  int time_out = 1000;
 int time_out_old = 30000;
 
  try {
       
 time_out_old = Settings.System.getInt(mContext.getContentResolver(),
                        SCREEN_OFF_TIMEOUT,  30000);
        Log.i(TAG, "get SCREEN_OFF_TIMEOUT :" + String.valueOf(time_out_old));
        } catch (NumberFormatException e) {
        Log.e(TAG, "read get int could not persist screen timeout setting", e);
        }
 powerManager.userActivity(SystemClock.uptimeMillis(), false);
        sWakeLock.acquire();
  while(true)
  {
 try{
  
   Log.e(TAG, "1");
   LocalSocket client = mServerSocket.accept();
   
   Log.e(TAG, "2");
   
   BufferedReader in = new
BufferedReader(new InputStreamReader(client.getInputStream()));
                String str = in.readLine();
                Log.i(TAG, "get Buffer : " + str);
                time_out = Integer.parseInt(str);
                client.close();
        } catch (Exception ex) {
            Log.e(TAG, "IOException in listenToSocket",ex);
        }
   
        
        if(time_out != -1)
        {
  Log.i(TAG, "Set back screen timeout :" +
String.valueOf(time_out_old));
  try {
          Settings.System.putInt(mContext.getContentResolver(),
                         SCREEN_OFF_TIMEOUT,  time_out_old);
         } catch (NumberFormatException e) {
 Log.e(TAG, "Set back could not persist screen timeout setting",e);
         }         
         
         break;
        }else
        {
         Log.i(TAG, "Set screen timeout :"
         +String.valueOf(time_out));
  try {
          Settings.System.putInt(mContext.getContentResolver(),
                        SCREEN_OFF_TIMEOUT,  time_out);
         } catch (NumberFormatException e) {
                Log.e(TAG, "could not persist screen timeout setting",e);
         }
         
        }
 }
 sWakeLock.release();
 powerManager.userActivity(SystemClock.uptimeMillis(), false);
 
/* 
 try{
  mServerSocket.close();
 }catch(Exception ex){
  Log.e(TAG, "Close ServerSocket: ", ex);
 }
 */
 
}
}
原创粉丝点击