Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Button Send;
- EditText IP;
- EditText Port;
- TextView Answer;
- EditText Message;
- private String ip_address;
- private int port = 11880;
- private SSLSocket socket = null;
- private BufferedReader in = null;
- private BufferedWriter out = null;
- private final String TAG = "TAG";
- private char keystorepass[] = "key12345".toCharArray();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Send = (Button) findViewById(R.id.btnSend);
- IP = (EditText) findViewById(R.id.etIP);
- Port = (EditText) findViewById(R.id.etPort);
- Answer = (TextView) findViewById(R.id.tvAnswer);
- Message = (EditText) findViewById(R.id.etMessage);
- Send.setClickable(true);
- Send.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (IP.getText().toString().equals(null) || Port.getText().toString().equals(null)){
- Toast.makeText(v.getContext(), "Bitte IP und Port eingeben", Toast.LENGTH_LONG).show();
- }else {
- String temp = Message.getText().toString();
- if (temp == null){
- temp = "Es wurde keine Nachricht eingegeben";
- }
- port = Integer.parseInt(Port.getText().toString());
- ip_address = IP.getText().toString();
- try {
- KeyStore ks = KeyStore.getInstance("BKS");
- InputStream keyin = v.getResources().openRawResource(R.raw.neuserverkeypem);
- ks.load(keyin,keystorepass);
- org.apache.http.conn.ssl.SSLSocketFactory socketFactory = new org.apache.http.conn.ssl.SSLSocketFactory(ks);
- socketFactory.setHostnameVerifier(socketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
- socket = (SSLSocket)
- socketFactory.createSocket(new Socket(ip_address,port), ip_address, port, false);
- socket.startHandshake();
- printServerCertificate(socket);
- printSocketInfo(socket);
- out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- chat(temp);
- } catch (UnknownHostException e) {
- Toast.makeText(v.getContext(), "Unknown host", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"Unknown host");
- //System.exit(1);
- } catch (IOException e) {
- Toast.makeText(v.getContext(), "No I/O", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"No I/O");
- e.printStackTrace();
- //System.exit(1);
- } catch (KeyStoreException e) {
- Toast.makeText(v.getContext(), "Keystore ks error", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"Keystore ks error");
- //System.exit(-1);
- } catch (NoSuchAlgorithmException e) {
- Toast.makeText(v.getContext(), "No such algorithm for ks.load", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"No such algorithm for ks.load");
- e.printStackTrace();
- //System.exit(-1);
- } catch (CertificateException e) {
- Toast.makeText(v.getContext(), "certificate missing", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"certificate missing");
- e.printStackTrace();
- //System.exit(-1);
- } catch (UnrecoverableKeyException e) {
- Toast.makeText(v.getContext(), "UnrecoverableKeyException", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"unrecoverableKeyException");
- e.printStackTrace();
- //System.exit(-1);
- } catch (KeyManagementException e) {
- Toast.makeText(v.getContext(), "KeyManagementException", Toast.LENGTH_SHORT).show();
- Log.i(TAG,"key management exception");
- e.printStackTrace();
- //System.exit(-1);
- }
- }
- }
- });
- }
- private void printServerCertificate(SSLSocket socket) {
- try {
- Certificate[] serverCerts =
- socket.getSession().getPeerCertificates();
- for (int i = 0; i < serverCerts.length; i++) {
- Certificate myCert = serverCerts[i];
- Log.i(TAG,"====Certificate:" + (i+1) + "====");
- Log.i(TAG,"-Public Key-\n" + myCert.getPublicKey());
- Log.i(TAG,"-Certificate Type-\n " + myCert.getType());
- System.out.println();
- }
- } catch (SSLPeerUnverifiedException e) {
- Log.i(TAG,"Could not verify peer");
- e.printStackTrace();
- System.exit(-1);
- }
- }
- private void printSocketInfo(SSLSocket s) {
- Log.i(TAG,"Socket class: "+s.getClass());
- Log.i(TAG," Remote address = "
- +s.getInetAddress().toString());
- Log.i(TAG," Remote port = "+s.getPort());
- Log.i(TAG," Local socket address = "
- +s.getLocalSocketAddress().toString());
- Log.i(TAG," Local address = "
- +s.getLocalAddress().toString());
- Log.i(TAG," Local port = "+s.getLocalPort());
- Log.i(TAG," Need client authentication = "
- +s.getNeedClientAuth());
- SSLSession ss = s.getSession();
- Log.i(TAG," Cipher suite = "+ss.getCipherSuite());
- Log.i(TAG," Protocol = "+ss.getProtocol());
- }
- public void chat(String temp){
- String message = temp;
- String line = "";
- // send id of the device to match with the image
- try {
- out.write(message+"\n");
- out.flush();
- } catch (IOException e2) {
- Log.i(TAG,"Read failed");
- System.exit(1);
- }
- // receive a ready command from the server
- try {
- line = in.readLine();
- Answer.setText("SERVER SAID: "+line);
- //Log.i(TAG,line);
- } catch (IOException e1) {
- Log.i(TAG,"Read failed");
- System.exit(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement