Страница 1 из 1

Android сокеты

Добавлено: 26 дек 2014, 20:31
Neptyn
Добрый день!
Здесь нашел пример, сделал приложение клиента(немного переработал, так как чистый код из примера не запускалса).
Также сделал приложение сервера ничего не меняя но оно тоже не запускаетться.
Помогите, пожайлуста, найти ошибку или сделать сервер на PC.
Вот клиент:

Код: Выделить всё

package com.example.client3;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity 
{
private Socket socket;
private static final int SERVERPORT = 6000;
private static final String SERVER_IP = "127.0.0.1";
EditText et;
Button Send_button, Conect_button;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et = (EditText) findViewById(R.id.editText1);
    Send_button = (Button) findViewById(R.id.Sen);
    Conect_button = (Button) findViewById(R.id.Con);
    }
    public void onClick(View v) 
    {
    	switch (v.getId())
    	{
    	case R.id.Con: 
    					try {
            			String str = et.getText().toString();
            			PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
            			out.println(str);
    					}
    					catch (UnknownHostException e) 
    					{
    						e.printStackTrace();
    					} 
    					catch (IOException e) 
    					{
    						e.printStackTrace();
    					} 
    					catch (Exception e) 
    					{
    						e.printStackTrace();
    					}
    					break;
    	case R.id.Sen:
    		new Thread(new ClientThread()).start();
    		break;
    	}
    }
    class ClientThread implements Runnable 
    {
        @Override
        public void run() 
        {
            try 
            {
            InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
            socket = new Socket(serverAddr, SERVERPORT);
            } 
            catch (UnknownHostException e1) 
            {
            	e1.printStackTrace();
            } catch (IOException e1) 
            {
            	e1.printStackTrace();
            }
        }
    }

}
Вот сервер(если неохота лесть в пример :) ):

Код: Выделить всё

package com.example.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class Server extends Activity {

	private ServerSocket serverSocket;

	Handler updateConversationHandler;

	Thread serverThread = null;

	private TextView text;

	public static final int SERVERPORT = 6000;

	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		text = (TextView) findViewById(R.id.text2);

		updateConversationHandler = new Handler(); 

		this.serverThread = new Thread(new ServerThread());
		this.serverThread.start();

	}

	@Override
	protected void onStop() {
		super.onStop();
		try {
			serverSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	class ServerThread implements Runnable {

		public void run() {
			Socket socket = null;
			try {
				serverSocket = new ServerSocket(SERVERPORT);
			} catch (IOException e) {
				e.printStackTrace();
			}
			while (!Thread.currentThread().isInterrupted()) {

				try {

					socket = serverSocket.accept();

					CommunicationThread commThread = new CommunicationThread(socket);
					new Thread(commThread).start();

				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	class CommunicationThread implements Runnable {

		private Socket clientSocket;

		private BufferedReader input;

		public CommunicationThread(Socket clientSocket) {

			this.clientSocket = clientSocket;

			try {

				this.input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));

			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		public void run() {

			while (!Thread.currentThread().isInterrupted()) {

				try {

					String read = input.readLine();

					updateConversationHandler.post(new updateUIThread(read));

				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	class updateUIThread implements Runnable {
		private String msg;

		public updateUIThread(String str) {
			this.msg = str;
		}

		@Override
		public void run() {
			text.setText(text.getText().toString()+"Client Says: "+ msg + "\n");
		}
	}
}

Re: Android сокеты

Добавлено: 27 дек 2014, 08:44
Foenix
еще один, не знающий про существование лога..

Re: Android сокеты

Добавлено: 27 дек 2014, 11:09
Neptyn
Foenix писал(а):еще один, не знающий про существование лога..
Я знаю что он существует, но не знаю где :lol:

Re: Android сокеты

Добавлено: 27 дек 2014, 14:20
Foenix
есть вебинар в соответсвующей ветке форума R.id.team.

Re: Android сокеты

Добавлено: 27 дек 2014, 15:35
altwin
Например вот сервер: https://github.com/NanoHttpd/nanohttpd, берите и подключайтесь, хоть с писи, хоть с макоси....