Search code examples
androidvisual-studio-2010wifiandroid-wifi

Send string from android to visual basic 2010


I want to send a string from Android to my PC (visual basic 2010) i try this one but it's not working. Please anyone help me..

I get my Android Code from : http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

And its Look Like :

package com.zelacroix.bukumenu;
import java.io.*;
import java.net.*;
import android.app.Activity;
import android.os.*;
import android.util.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class TesKirim extends Activity {

        private EditText serverIp;

        private Button connectPhones;

        private String serverIpAddress = "192.168.1.2";

        private boolean connected = false;

        private Handler handler = new Handler();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.teskirim);

            serverIp = (EditText) findViewById(R.id.server_ip);
            connectPhones = (Button) findViewById(R.id.connect_phones);

            connectPhones.setOnClickListener(new OnClickListener() {
            @Override
                public void onClick(View v) {
                    if (!connected) {
                        serverIpAddress = serverIp.getText().toString();
                        if (!serverIpAddress.equals("")) {
                            Thread cThread = new Thread(new ClientThread());
                            Toast.makeText(getApplicationContext(), 
                                               "masuk if",  
                                               10)
                                .show();
                            cThread.start();
                        }
                    }
                }
            });
        };

        public class ClientThread implements Runnable {
            public void run() {
                try {
                    InetAddress serverAddr = 
                        InetAddress.getByName(serverIpAddress);
                    Log.d("ClientActivity", "C: Connecting...");
                    Socket socket = new Socket(serverAddr , 10000);
                    connected = true;
                    while (connected) {
                        try {
                            Log.d("ClientActivity", "C: Sending command.");
                            PrintWriter out = 
                                new PrintWriter(
                                    new BufferedWriter(
                                        new OutputStreamWriter(
                                            socket.getOutputStream())), 
                                    true);

                                // where you issue the commands
                                out.println("Hey Server!");
                                Log.d("ClientActivity", "C: Sent.");
                        } catch (Exception e) {
                            Log.e("ClientActivity", "S: Error", e);
                        }
                    }
                    socket.close();
                    Log.d("ClientActivity", "C: Closed.");
                } catch (Exception e) {
                    Log.e("ClientActivity", "C: Error", e);
                    connected = false;
                }
            }
        };
};

my Visual Basic is using UDP method.. And its Look Like :

Imports System.Net.Sockets
Imports System.Net
Imports System.IO
Imports System.Text

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, 
                              ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim udp_Client As New UdpClient(10000)

            Dim remoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)

            Dim receiveBytes As [Byte]() = udp_Client.Receive(remoteIpEndPoint)
            Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
            ListBox1.Items.Add(returnData.ToString)
            udp_Client.Close()
        Catch ex As Exception
            ListBox1.Items.Add(ex.ToString())
        End Try
    End Sub
End Class

Please I really2 need to comunicate them..


Solution

  • I think the problem is caused since you are mixing TCP and UDP communication. The Visual basic app is expecting to receive data over UDP and the Android App is sending over TCP. I created the Android and VB projects from your code and called following UDP send function from the android app and the communication works fine. The string from Android appears correctly in the listbox in the VB app. Try using UDP sockets from your android app as follows:

    private void udp_send(String serverIpAddress) throws IOException
            {
                String messageStr="Hello Android!";
                int server_port = 10000;
                DatagramSocket s = new DatagramSocket();
                InetAddress local = InetAddress.getByName(serverIpAddress);
                int msg_length=messageStr.length();
                byte[] message = messageStr.getBytes();
                DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port);
                s.send(p);
            }
    

    [i tried this code on an android simulator and the VB app running on the same machine. in case you are trying accross different machines and still face problems with the above code, make sure that the udp traffic for the port 10000 is not stopped by some firewall. You can give the detailed exception log from the Android app for us to better understand the problem if necessary]