c#server不会识别android

时间:2013-07-09 14:56:35

标签: c# java

这是我在C#中的服务器 127.0.0.1,端口4444

    using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;


public class serv
{
    public static void Main()
    {
        try
        {
            IPAddress ipAd = IPAddress.Parse("127.0.0.1");
            // use local m/c IP address, and 

            // use the same in the client


            /* Initializes the Listener */
            TcpListener myList = new TcpListener(ipAd, 4444);

            /* Start Listeneting at the specified port */
            myList.Start();

            Console.WriteLine("The server is running at port 4444...");
            Console.WriteLine("The local End point is: " +
                              myList.LocalEndpoint);
            Console.WriteLine("Waiting for a connection.....");
        m:
            Socket s = myList.AcceptSocket();
            Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

            byte[] b = new byte[100];
            int k = s.Receive(b);

            char cc = ' ';
            string test = null;
            Console.WriteLine("Recieved...");
            for (int i = 0; i < k - 1; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
                cc = Convert.ToChar(b[i]);
                test += cc.ToString();
            }

            switch (test)
            {
                case "1":
                    break;


            }

            ASCIIEncoding asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("The string was recieved by the server."));
            s.Close();
            Console.WriteLine("\nSent Acknowledgement");


            /* clean up */
            goto m;
            myList.Stop();
            Console.ReadLine();

        }
        catch (Exception e)
        {
            Console.WriteLine("Error..... " + e.StackTrace);
        }
    }

}

这是我在JAVA中的android(客户端)代码

package com.example.aclient;

import java.io.IOException;
import java.io.PrintWriter;
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 client;
     private PrintWriter printwriter;
     private EditText textField;
     private Button button;
     private String messsage;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      textField = (EditText) findViewById(R.id.editText1); //reference to the text field
      button = (Button) findViewById(R.id.button1);   //reference to the send button

      //Button press event listener
      button.setOnClickListener(new View.OnClickListener() {

       public void onClick(View v) {

        messsage = textField.getText().toString(); //get the text message on the text field
        textField.setText("");      //Reset the text field to blank

        try {

         client = new Socket("127.0.0.1", 4444);  //connect to server
         printwriter = new PrintWriter(client.getOutputStream(),true);
         printwriter.write(messsage);  //write the message to output stream

         printwriter.flush();
         printwriter.close();
         client.close();   //closing the connection

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

     }
    }

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

    <EditText
         android:inputType="text"
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="47dp"
        android:layout_toLeftOf="@+id/textView1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/editText1"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="Button" />

</RelativeLayout>

C#上的Whay服务器无法识别android客户端? 我不知道如何连接C#服务器与Android客户端? 这是我的第一台服务器,我不知道 很多关于服务器..所以请帮助我!

2 个答案:

答案 0 :(得分:3)

127.0.0.1localhost,是您自己的机器。如果您在本地PC上使用C#托管服务器,并且您有一个看起来很像Android的Java应用程序,它肯定会在另一台机器(您的手机,平板电脑或模拟手机或平板电脑)上运行,而不是同一台机器。您需要使用两台计算机都知道的IP地址进行通信,并且两台计算机都会追溯到同一个物理机箱。

在您的PC上,127.0.0.1是您的PC。 在平板电脑上,127.0.0.1是您的平板电脑,而不是您的电脑。

在网络中查找PC的IP(如果您运行的是Windows,请在控制台中输入ipconfig)并使用它。确保在部署时使用公共IP。

答案 1 :(得分:1)

你必须使用10.0.2.2,因为你将使用你的模拟器,localhost指的是模拟设备而不是机器