Android сокеты

Ответить
Neptyn
Сообщения: 6
Зарегистрирован: 23 дек 2014, 11:57

Android сокеты

Сообщение Neptyn » 26 дек 2014, 20:31

Добрый день!
Здесь нашел пример, сделал приложение клиента(немного переработал, так как чистый код из примера не запускалса).
Также сделал приложение сервера ничего не меняя но оно тоже не запускаетться.
Помогите, пожайлуста, найти ошибку или сделать сервер на 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");
		}
	}
}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android сокеты

Сообщение Foenix » 27 дек 2014, 08:44

еще один, не знающий про существование лога..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Neptyn
Сообщения: 6
Зарегистрирован: 23 дек 2014, 11:57

Re: Android сокеты

Сообщение Neptyn » 27 дек 2014, 11:09

Foenix писал(а):еще один, не знающий про существование лога..
Я знаю что он существует, но не знаю где :lol:

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Android сокеты

Сообщение Foenix » 27 дек 2014, 14:20

есть вебинар в соответсвующей ветке форума R.id.team.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Android сокеты

Сообщение altwin » 27 дек 2014, 15:35

Например вот сервер: https://github.com/NanoHttpd/nanohttpd, берите и подключайтесь, хоть с писи, хоть с макоси....
Изображение

Ответить