安卓平板电脑和PC之间的通信



我从安卓系统开始,在我的第一个应用程序中,我需要在安卓表和PC之间建立通信。通信是通过staqtic IP直接进行的,因为我需要当我有几台电脑和平板电脑时,每个表只与它的PC通信。

从平板电脑到电脑的通信已经工作,但从电脑到桌子我无法获得传输的数据

安卓侧

public class Server implements Runnable 
{
    @Override
    public void run() 
    {
        while (always==true)
        {
            while(start2==false)
            {
            }
            try 
            {
                InetAddress serverAddr = InetAddress.getByName("192.168.173.133");
                updatetrack("nServer: Start connectingn");
                //*DatagramSocket socket = new DatagramSocket(SERVERPORT2, serverAddr);/
                DatagramSocket socket = new DatagramSocket(SERVERPORT2);
                byte[] buf = new byte[17];
                DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, SERVERPORT2);
                //*DatagramPacket packet = new DatagramPacket(buf, buf.length);/
                updatetrack("Server: Receivingn");
                socket.receive(packet);
                updatetrack("Server: Message received: '" + new String(packet.getData()) + "'n");
                updatetrack("Server: Succeed!n");
                start2=false;
            } 
            catch (Exception e) 
            {
                updatetrack("Server: Error!n");
                start2=false;
            }
        }
    }
}    

192.168.173.133是表IP,SERVERPORT2是4445当我启动应用程序时,它在显示"服务器:正在接收"后仍在等待数据,但

C#代码

public static void Main()
{
        IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.173.133"), 4445);
        string hostname = Dns.GetHostName();
        byte[] data = Encoding.ASCII.GetBytes(hostname);
        sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
        sock.SendTo(data, iep2);
        sock.Close();
}

我想这是任何愚蠢的认为我被遗忘了,但在阅读了许多论坛和书籍后,我在这一点上停止了

任何建议都欢迎

您使用UDP连接和套接字。receive(数据包)不等待数据包。如果缓冲区中没有数据包,则此操作将引发异常。尝试将您的代码更改为:

@Override
    public void run() 
    {
        while (always==true)
        {
            while(start2==false)
            {
            }
            try 
            {
                InetAddress serverAddr = InetAddress.getByName("192.168.173.133");
                updatetrack("nServer: Start connectingn");
                //*DatagramSocket socket = new DatagramSocket(SERVERPORT2, serverAddr);/
                DatagramSocket socket = new DatagramSocket(SERVERPORT2);
                while (always==true)
                {
                 try{
                byte[] buf = new byte[17];
                DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, SERVERPORT2);
                //*DatagramPacket packet = new DatagramPacket(buf, buf.length);/
                updatetrack("Server: Receivingn");
                socket.receive(packet);
                updatetrack("Server: Message received: '" + new String(packet.getData()) + "'n");
                updatetrack("Server: Succeed!n");
                start2=false;
                }
                catch(Exception ex) {ex.printStackTrace();}
                }

            } 
            catch (Exception e) 
            {
                updatetrack("Server: Error!n");
                start2=false;
            }
        }
    } 

最新更新